关于实型变量有效数字的问题
书上有一段是这样写的:
main()
{float a,b;
a=123456.789e5;
b=a+20;
printf( "%f\n ",b);
}
一个实型变量只能保证的有效数字是7位有效数字。结果是a和b的值都是12345678848.000000,可以看到,前8位是准确的。
在这里我就很郁闷了:既然只能保证7位有效数字,但又说前8位是准确的,为什么不说前7位是准确的?求助!
[解决办法]
呵呵,你别钻这个牛解尖就平可以了吗?你这样钻的确有点文字游戏的味道了。
从123456.789e5到12345678848.000000,确实可以看出前8位都是准确的,至少在这个例子里,有8位准确,这是事实。
然后,既然他举的例子中有8位是准确的,比7还多一位,那OK,足以证明他原来没有撒谎,不是么?
所以问题不在于道理本身,而在于你怎么理解他想表达的意思。
我倒觉得,如果他改成:“结果是a和b的值都是12345678848.000000,可以看到,前7位是准确的。”——这样反而不好,会让人产生这种感觉:“你不长眼啊?没看到第8位不也是一样的吗?”