浮点计算机 - 无法获得正确的结果

时间:2011-01-17 15:46:15

标签: floating-point theory

遇到挑战。

假设我有一个具有以下特征的理论上,基数10 浮点计算器

  • 尾数只有3位数
  • 指数的1位数
  • 签署尾数和指数

这台机器如何计算以下内容?

300 + \sum_{i=1}^{100} 0.2

正确的结果是320.机器的结果是300.但为什么?无法得到20失踪的地方......

感谢您的时间。

2 个答案:

答案 0 :(得分:3)

尽管davin的回答,数字0.2不是0:2e-1在您的系统中是可表示的。这里发生的是300.2无法表示完全精确,因此300 + 0.2会向下舍入到300.如果你这样做了100次,你仍然会得到300 :-)

但是,您的系统应该能够正确计算300 + 100 * 0.2。

答案 1 :(得分:1)

此计算器中的数字0.2为0,因为它应评估为2 x 10 ^( - 1),尽管指数只有1位数,允许范围为0和1,因此-1超出其范围。下溢导致截断,产生0。

因此,如果我们总和0一百次并将结果添加到300,我们得到300。