当前位置: 代码迷 >> C语言 >> [原创]关于输出精度的一个问题!!!!!!!!!
  详细解决方案

[原创]关于输出精度的一个问题!!!!!!!!!

热度:304   发布时间:2005-09-08 09:38:00.0
[原创]关于输出精度的一个问题!!!!!!!!!
float x=333.12345678901234567890; printf("%f",x); 当然float默认输出精度是6位小数,但结果为什么是333.123444 而不是333.123457。 printf("%.4f",x ); 结果是333.1234 而不是333.1235。 printf("%2.5f",x); 结果是333.12346 为什么不是333.12345 printf("%.18f",x);结果是什么,为什么? 实际的数据精度是取决了操作系统? C系统? CPU?
搜索更多相关的解决方案: 精度  操作系统  printf  float  输出  

----------------解决方案--------------------------------------------------------
你的第一个问题的答案为:因为在TC中,有效数字一般为7位,所以333.123444 前面7位数字(333.1234)是有效的而后面的这无效了.唔……,后面的还是不说了,书上说得很清楚。 而实际数据精度,取决于,你所使用的编译器。
----------------解决方案--------------------------------------------------------
数据精度取决于你所使用的系统环境。 float 单精度实型数据 在内存中占4个字节,提供 7 位有效数字。 double 双精度实型数据 在内存中占8个字节,提供 15~16 位有效数字。 你可以将 float 改为 double 再运行,看看结果,就能明白了。 注意,以上所说的是有效数字,这和小数位数是不同的两个概念。

[此贴子已经被作者于2005-9-13 0:40:38编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案