13592760351 发表于 2024-4-22 01:57:55

大神们进来下,浮点数用printf打印出错了

      double f=123456.8991;
      printf("double=%f \r",f);             显示的是:double=123456.900000
      printf("double=%.4f \r",f);      显示的是:double=123456.9000
       只能输出1位小数,后面给我补零了,大神们,你们是怎处理的呢,我用的的STC8H1K08T



tzz1983 发表于 2024-4-22 08:35:48

本帖最后由 tzz1983 于 2024-4-22 08:37 编辑

C51不支持double类型, 仅支持flaot类型。

实际上是把f转换为flaot类型后再显示的,

flaot的十进制有效位只有6到7位, 所以后面给你补0了

_奶咖君_ 发表于 2024-4-22 09:04:21

原因是楼上版主说的,,解决方法的话可以按照自己的精度扩大对应的位数然后整体按整形计算 最后结果按整形发送。注意的是别超了整形的位数。

xxxevery 发表于 2024-4-22 11:15:13

又学到新知识了

soma 发表于 2024-4-22 11:42:46

51竟然不支持double啊

wangxiangtan 发表于 2024-4-22 13:45:21

涨知识了,51不支持double类型

LAOXU 发表于 2024-4-22 14:58:58

soma 发表于 2024-4-22 11:42
51竟然不支持double啊

51 支持double, 但这个 double 也是单精度的 {:lol:}

lezjin 发表于 2024-4-22 18:38:08

{:4_174:}{:4_174:}

13592760351 发表于 2024-4-24 00:11:51

非常感谢,学习了
页: [1]
查看完整版本: 大神们进来下,浮点数用printf打印出错了