浮点数中的取消问题

计算科学 浮点
2021-12-01 18:43:34

http://en.wikipedia.org/wiki/Floating_point#Addition_and_subtraction中,它给出了一个关于浮点数取消问题的例子,见

在此处输入图像描述

我不明白为什么要写:

The best representation of this difference is e = -1; s=4.877000, which differs more than 20%.....

在此示例中,它使用IEEE 754 decimal32 format.

有人可以解释一下这个例子想要说明的关于浮点数取消问题的想法吗?

1个回答

他们提出的观点是,如果您计算差异 123457.1467 - 123456.659 = 0.4877,那么您得到的答案似乎与减去四舍五入后得到的差异 123457.1 - 123456.7 = 0.4 完全不同。~20% 的数字是因为 0.4877 比 0.4 大 20% 以上。

这个例子表明,如果你减去两个在相对差异很小的意义上彼此非常接近的数字,那么如果你使用浮点运算,你可能会遇到麻烦。这意味着有时值得以数学上等效但浮点友好性不同的方式重新组织您的计算。