[原创]关于输出精度的一个问题!!!!!!!!!
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?
----------------解决方案--------------------------------------------------------
你的第一个问题的答案为:因为在TC中,有效数字一般为7位,所以333.123444 前面7位数字(333.1234)是有效的而后面的这无效了.唔……,后面的还是不说了,书上说得很清楚。 而实际数据精度,取决于,你所使用的编译器。
----------------解决方案--------------------------------------------------------
数据精度取决于你所使用的系统环境。 float 单精度实型数据 在内存中占4个字节,提供 7 位有效数字。 double 双精度实型数据 在内存中占8个字节,提供 15~16 位有效数字。 你可以将 float 改为 double 再运行,看看结果,就能明白了。 注意,以上所说的是有效数字,这和小数位数是不同的两个概念。
[此贴子已经被作者于2005-9-13 0:40:38编辑过]
----------------解决方案--------------------------------------------------------