newlife 发表于 2023-8-25 20:56:13

STC单片机float类型精度以及有效数字问题

使用STC单片机,发现浮点数值为998571.375f时,也就是有效位数为9位时,使用printf函数发现输出值为998571.400这个值,有效数字只有7位,产生了精度丢失和进位,这个问题有大佬知道嘛?

kksk 发表于 2023-8-26 09:14:27

按理说不应该,float的998571.400实际上存储的也是998571.375,但是keil的printf函数只提供了7位有效数字(参见 https://developer.arm.com/documentation/ka003338/latest/ )。
如果你需要在一定范围内精确的数值可以考虑用32位整数作定点数

newlife 发表于 2023-8-29 14:28:51

kksk 发表于 2023-8-26 09:14
按理说不应该,float的998571.400实际上存储的也是998571.375,但是keil的printf函数只提供了7位有效数字( ...

非常感谢大佬

123 发表于 2023-10-15 20:54:33

此问题与STC无关,浮点数是Keil的功能,你应该咨询Keil的客服。
页: [1]
查看完整版本: STC单片机float类型精度以及有效数字问题