风铃草2 发表于 2016-12-13 09:13:30

stm32 unsigned int 转float 数据变问题


Temp的值是2147553344 (0x80011040)数据类型是unsigned int型
Temp_float的值是2.14755328e+009数据类型是float型
SysData.ADC_VALUE的值是2147553280 数据类型是double型
现执行如下进程:

Temp = 0x80011040;
SysData.ADC_VALUE=0;
Temp_float = Temp;//到这里值传递后就变了   这是为什么?
SysData.ADC_VALUE+=Temp_float;



https://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=386427&size=300x300&key=9ddbcfe80a364e42&nocache=yes&type=fixnonehttps://www.stmcu.org.cn/module/forum/forum.php?mod=image&aid=386428&size=300x300&key=7bc8b7c0c4b31b2d&nocache=yes&type=fixnone

cuyebiren 发表于 2016-12-13 10:06:54

Temp_float = Temp;//到这里值传递后就变了   这是为什么?
没有变奥,只是表示方式不一样,变成了科学计数法,这与浮点数在内存中的存储方式有关,具体我也不太清楚。其实还是 2147553344(虽然有点精度丢失)。
页: [1]
查看完整版本: stm32 unsigned int 转float 数据变问题