标题: 加这个(float)是什么意思,把uint16类型转换成float类型吗 [打印本页]

作者: egsresrhtrhrtst    时间: 2023-5-10 15:35
标题: 加这个(float)是什么意思,把uint16类型转换成float类型吗
uint16_t conv_value[6];

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


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

作者: liixaofei5    时间: 2023-5-10 18:11
(float)把conv_value[0]这个变量强制转化为float后与后面的3.3等运算(由于乘以3.3,已存在float,没有这个(float)也会这样做)。但是,右侧结果赋值给voltage[0]时,会再次转回voltage[0]自己的类型,本程序段看不到,需要看其定义
作者: Hephaestus    时间: 2023-5-10 18:31
对是对,但如果是8位机,float操作占用的系统资源太多了,要尽量避免。
作者: yzwzfyz    时间: 2023-5-11 15:18
3.3/4096=0.0008056640625。
在内存中如果存储表示呢?用几个字节存储,每个字节中写入什么?
这是用FLOAT的原因。
作者: Hephaestus    时间: 2023-5-11 16:21
3.3/4096完全可以写成80566ul,再做long型运算,反正都是显示给人看的,小数点打在哪里都太简单了,而long型运算占用的时间和消耗的flash空间要比float少太多太多了。
作者: 涅槃重生1    时间: 2023-5-11 20:27
这个是C语言的强制类型转换方法:强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。
作者: coody_sz    时间: 2023-5-12 11:06
强制类型转换
作者: kk17328    时间: 2023-5-16 21:51
强转变量类型,防止精度丢失
作者: Longan.Wang    时间: 2023-5-17 15:25
就是你说的那个意思!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1