我在 SQL Server 2016 上遇到了浮点数据类型之和的问题。我知道浮点数据类型的加法既不是可交换的也不是关联的意味着加法的顺序很重要,并且会影响结果的准确性。然而,这只是让我想知道,sum 是如何运作的?我找不到任何资料告诉我它的算术序列以及 SQL Server 如何选择顺序。
是累加计算还是交换计算?
SP每次执行时其算术顺序是否会改变?
示例:
首次执行:
XYZ 列下值为 A 的组 = a + b + c + d
XYZ 列下具有值 B 的组 = a + c + d + b
第二次执行:
XYZ 列下值为 A 的组 = a + d + c + b
XYZ 列下具有值 B 的组 = b + c + d + a
请提供带有原始材料的答案,如文献、指南、论文等。
浮点数据类型的加法既是可交换的又是结合的,在浮点数据类型的正常误差范围内。
实际上,由于硬件执行不同,任意两次浮点计算的执行结果可能会略有不同。处理器有时在内部使用 80 位浮点数。