【发布时间】:2018-07-30 09:46:07
【问题描述】:
根据Is Floating point addition and multiplication associative?,我知道 A+B+C 与 A+C+B 会有不同的结果,因为 (A+B)+C 和 (A+C)+B 的结果不同。
但是如果只有 2 个数字呢? A+B 和 B+A 的结果一样吗?
【问题讨论】:
标签: floating-point addition ieee-754
根据Is Floating point addition and multiplication associative?,我知道 A+B+C 与 A+C+B 会有不同的结果,因为 (A+B)+C 和 (A+C)+B 的结果不同。
但是如果只有 2 个数字呢? A+B 和 B+A 的结果一样吗?
【问题讨论】:
标签: floating-point addition ieee-754
首先,A+B 是否给出与 B+A 相同的结果的问题不是associativity,而是commutativity。要回答您的问题,我们需要知道浮点加法和乘法的操作数顺序是否会影响结果(与 关联性 问题的不同分组相反)。
现在,IEEE-754 浮点加法和乘法是可交换的(但不是关联的,正如您在问题中正确指出的那样)。
我可能应该在这里打一个星号,因为作为 IEEE-754 一部分的不同 NaN(实际上是它们所谓的有效载荷)可能会违反交换性,但我认为您对这种特殊情况不感兴趣。
还有another question on StackOverflow实际上回答了浮点运算的交换性问题——但我认为交换性和关联性之间的混淆可能会得到解决这个问题更好。
【讨论】: