august 发表于 2006-12-12 16:03:45

关于输出的问题

程序如下:
main()
{
float x=234.89;
printf("%f\n",x);
printf("%08.3e%.3e\n",x,x);
}

为什么其输出的答案是x=234.889999而不是x=234.890000呢?后面的不是补上零就可以了吗?
为什么下面的一个输出答案都是2.35e+02呢?对于%08.3e这个不是应该前面加零吗?

诸神的曙光 发表于 2007-2-8 14:26:51

关于单精度浮点数在计算机中的表示,忘了,楼主查查资料吧
计算机想法和人不一样,它不懂得加0哈

zero龙 发表于 2007-2-14 19:20:57

第一个问题我也碰过~改成double就可以了~float的有效位理论上来说是7位~实际使用并不精确~但不代表不准确~因为234.889999是约等于234.89的~输出的位如果超过了7位就会出现错误~7位以内还是正确的

以指数的形式输出就不太清楚了~几乎没用过这个

lw 发表于 2007-2-14 22:07:48

补零应该是对整数起作用巴……08大概被无视了?

.3的确是保留三个有效数字……
页: [1]
查看完整版本: 关于输出的问题