1

当涉及到浮点时,我试图了解操作的关联性。在我的讲义中,陈述如下:

“假设浮点值存储七位精度。考虑将 11 个数字相加的问题,其中一个数字是 10^7,另外十个是 1。

如果将小数(1)分别添加到大数中,一次一个,对那个数字没有影响,因为小数出现在大数的第八位“。所以在这里我明白了结果是 1,000,001。

“但是,如果先将小数相加,然后将结果与大数相加,则结果为七位精度 1.000001 * 10^7”

但在我看来,这两种方法都是一样的:我们将 10 个数字加到更大的数字上。有人可以澄清这个问题吗?谢谢

4

1 回答 1

3

我们先回顾一下第一种方法。当小数与大数一一相加时,会发生以下十次:

10,000,000 + 1 = 10,000,001

但是,由于浮点值仅存储七位精度,因此最后一位,即八位,将在第七位四舍五入为零。此操作将发生 10 次,因此值将保持为 10,000,000。

接下来我们来看看第二种方法。首先将 10 个数字 1 相加,因此总和为 10。当将其添加到 10^7 时,将发生以下情况:

10,000,000 + 10 = 10,000,010

由于浮点值存储了七位精度,因此该数字将保留!

于 2015-05-11T13:39:43.460 回答