永发信息网

0.2没有浮点数形式的二进制精确表示什么意思?

答案:2  悬赏:20  手机版
解决时间 2021-03-04 12:02
  • 提问者网友:萌卜娃娃
  • 2021-03-03 18:45
我在看一个循环的例题,他的循环是for(double x=0.0;x!-2.0,x+=0.2)
题后解释说,循环会一直下去,因为0.2没有浮点数形式的二进制精确表示,啥意思啊?谢谢
最佳答案
  • 五星知识达人网友:话散在刀尖上
  • 2021-03-03 19:11
在回答这个问题之前,让我们先考虑这样的一个问题:0.2转化成二进制是什么数?
答案是(0.2)10=(0.001100110011001100110011....)2
在计算机当中存储的时候,只能够存储有限位数的二进制数,因此在存储数0.2的时候,计算机是用了一个跟0.2很接近的数表示0.2的。就好像我们平常有很多问题采用“四舍五入”的方法精简计算一样。
而在计算机当中0.2跟0.20000000000000000000000000000000000000001是相等的。

因此,在计算两个实数值是否相等的时候,一般采用的方法不能够使用等号来判断,而是采用“相对相等”的方法
一个办法是做差法,比如实数a与b,我们认为当a和b足够接近的时候,就认为他们是相等的,fabs(a-b) 另一个是做商法,fabs(a/b-1)
想问题中给出的循环,正确的表示方法应该是
for(double x=0.0;fabs(x-2.0)>1e-6;x+=0.2)
当然也可以按照本身的逻辑关系把判断条件写成x<1.9,前提是循环中没改变x的值
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-03-03 20:07
搜一下:0.2没有浮点数形式的二进制精确表示什么意思?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯