为什么9.0 + 4.53 + 4.53在β= 10和p = 3时产量为9.05?
我正在读每一个计算机科学家应该知道的关于浮点算术的这一段:
(6)
(假设三角形非常平坦,即a≈b + c,那么s≈a,并且公式(6)中的项(s-a)减去两个附近的数字,其中一个可能有舍入误差。 ,如果a = 9.0,b = c = 4.53,s的正确值是9.03,A是2.342 ....即使s(9.05)的计算值仅有2 ulps的误差,计算出的A是3.04,70 ulps的错误。
来自:http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#1403
我想知道为什么(a+b+c)/2
等于9.05,其中a = 9.0
, b = c = 4.53
?
我想它可能涉及的硬件会首先计算a+b
,结果为13.53
,四舍五入为13.5
。 然后c
将被添加到13.5
,给我们18.03
,最终四舍五入到18.0
。 最后, 18.0
除以2
。 这产生9.00
,并且给变量s
。 假定这个硬件至少有一个警卫数字。
那么哪里出错?
如果他们先做了b + c = 9.06
,然后再加上a + 9.06 = 18.06
,将其圆整到18.1
他们会达到9.05
。
我想这个细节并不重要,重点是只有三位有效数字,
9.00
或9.05
结束,但不以正确的9.03
(尽管可以表示该数字) 3.04
比2.342...
,甚至不能达到第一位数字) 上一篇: Why does 9.0 + 4.53 + 4.53 yield 9.05 when β = 10 and p = 3?