找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1465|回复: 8
收起左侧

加这个(float)是什么意思,把uint16类型转换成float类型吗

[复制链接]
ID:978416 发表于 2023-5-10 15:35 | 显示全部楼层 |阅读模式
uint16_t conv_value[6];

voltage[0]=(float)conv_value[0]*3.3/4096;


加这个(float)是什么意思,把uint16类型转换成float类型吗
回复

使用道具 举报

ID:821429 发表于 2023-5-10 18:11 | 显示全部楼层
(float)把conv_value[0]这个变量强制转化为float后与后面的3.3等运算(由于乘以3.3,已存在float,没有这个(float)也会这样做)。但是,右侧结果赋值给voltage[0]时,会再次转回voltage[0]自己的类型,本程序段看不到,需要看其定义
回复

使用道具 举报

ID:883242 发表于 2023-5-10 18:31 | 显示全部楼层
对是对,但如果是8位机,float操作占用的系统资源太多了,要尽量避免。
回复

使用道具 举报

ID:123289 发表于 2023-5-11 15:18 | 显示全部楼层
3.3/4096=0.0008056640625。
在内存中如果存储表示呢?用几个字节存储,每个字节中写入什么?
这是用FLOAT的原因。
回复

使用道具 举报

ID:883242 发表于 2023-5-11 16:21 | 显示全部楼层
3.3/4096完全可以写成80566ul,再做long型运算,反正都是显示给人看的,小数点打在哪里都太简单了,而long型运算占用的时间和消耗的flash空间要比float少太多太多了。
回复

使用道具 举报

ID:330059 发表于 2023-5-11 20:27 | 显示全部楼层
这个是C语言的强制类型转换方法:强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
回复

使用道具 举报

ID:1034262 发表于 2023-5-12 11:06 | 显示全部楼层
强制类型转换
回复

使用道具 举报

ID:1074206 发表于 2023-5-16 21:51 | 显示全部楼层
强转变量类型,防止精度丢失
回复

使用道具 举报

ID:77589 发表于 2023-5-17 15:25 | 显示全部楼层
就是你说的那个意思!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表