为什么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.0b = 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.009.05结束,但不以正确的9.03 (尽管可以表示该数字)
  • 你所做的每一项额外的操作都会带来更多的不准确性,因此最终的结果可能会远远超过三位数字的限制( 3.042.342... ,甚至不能达到第一位数字)
  • 链接地址: http://www.djcxy.com/p/85623.html

    上一篇: Why does 9.0 + 4.53 + 4.53 yield 9.05 when β = 10 and p = 3?

    下一篇: Relative error and contaminated digits