标题:[原创]关于输出精度的一个问题!!!!!!!!!
只看楼主
lu
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2005-5-11
 问题点数:0 回复次数:2 
[原创]关于输出精度的一个问题!!!!!!!!!
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 输出 
2005-09-08 09:38
hijk_12
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-6-25
得分:0 
你的第一个问题的答案为:因为在TC中,有效数字一般为7位,所以333.123444 前面7位数字(333.1234)是有效的而后面的这无效了.唔……,后面的还是不说了,书上说得很清楚。 而实际数据精度,取决于,你所使用的编译器。

2005-09-08 12:35
枫叶飘香
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2004-4-15
得分:0 
数据精度取决于你所使用的系统环境。 float 单精度实型数据 在内存中占4个字节,提供 7 位有效数字。 double 双精度实型数据 在内存中占8个字节,提供 15~16 位有效数字。 你可以将 float 改为 double 再运行,看看结果,就能明白了。 注意,以上所说的是有效数字,这和小数位数是不同的两个概念。

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


や生如夏花之绚烂,死如秋叶之静美。 や很多时候,会考虑死亡,宿命或是无常。 又觉得人是可笑的,一枚棋子而已。 所以昆德拉说,人类一思考,上帝就发笑。 那么所有的意义就是在于感受过,正在感受和以后注定要感受的一切吗? 很颓废的,笑了。
2005-09-13 00:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-27022-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059102 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved