非关联浮点加法示例

bok*_*kan -2 floating-point

我正在写一篇关于浮点数的文章。我在 Javascript 控制台中进行了一些简单的测试。

我正在寻找一个非交换加法的例子,即:(x+y)+z!=(z+x)+y

如果你有一些有用的 xyz 值,谢谢。

Sne*_*tel 5

没有这样的例子,因为 IEEE-754 定义的浮点加法保证是可交换的。相关用语:

...每一个操作都应该被执行,就好像它首先产生一个正确到无限精度和无限范围的中间结果,然后强制这个中间结果适合目标的格式。

也就是说,加法本身以无限精度执行;结果中的所有错误都来自需要丢弃某些精度。由于无限精度(即“常规”)加法是可交换的,这意味着整个操作是可交换的。

你可能想到的是结合性。浮点加法不是结合的,因为前两个数相加后的精度损失通常与后两个数相加后的精度损失不同。最常见的例子被称为“灾难性取消”:(1 + 1e100) + -1e100 = 0、 和1 + (1e100 + -1e100) = 1