首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于实型变量有效数字的有关问题

2012-02-29 
关于实型变量有效数字的问题书上有一段是这样写的:main(){floata,ba123456.789e5ba+20printf( %f\n

关于实型变量有效数字的问题
书上有一段是这样写的:
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位不也是一样的吗?”

热点排行
Bad Request.