浮点运算的相关性

时间:2015-05-11 13:33:00

标签: programming-languages associativity compiler-construction

我试图了解浮点运算的相关性。 在我的讲义中,陈述如下:

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

如果小数(1)每次都加到一个大数字,一次一个,对这个数字没有影响,因为小数字出现在大数字的第八位数#34;。所以在这里我理解结果是1,000,001。

"但是,如果首先将小数字加在一起并将结果添加到大数字,则结果是七位数的准确度1.000001 * 10 ^ 7"

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

1 个答案:

答案 0 :(得分:3)

我们先来看看第一种方法。当小数字逐个添加到大数字时,以下将发生十次:

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

然而,由于浮点值仅存储七位数的精度,因此该八位数将在第七位数字舍入为零。此操作将发生10次,因此该值将保持为10,000,000。

接下来让我们来看看第二种方法。首先将10个数字1加在一起,因此这将总计为10.当这被添加到10 ^ 7时,将发生以下情况:

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

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