乘法在不精确的浮点运算中总是可交换的吗?

时间:2011-02-15 17:51:41

标签: arrays floating-point operator-overloading d

我正在尝试理解D语言运行时中的一些代码。对于以下两件事似乎有单独的功能:

array1[] += scalar * array2[];
array1[] += array2[] * scalar;

为什么不能用一个功能完成这些操作?我认为即使在不精确的浮点运算中,乘法也是可交换的。

2 个答案:

答案 0 :(得分:5)

我猜不同之处仅在于函数原型 - 一个是(double, double[])而另一个是(double[], double)。但结果应该是相同的。

答案 1 :(得分:3)

我对D语言一无所知,但我很高兴回答你标题中的问题:

  

乘法在不精确的浮点运算中是否总是可交换的?

直到NaN值的“有效载荷”,是的。 IEEE-754浮点乘法是可交换的(也是附加的)。如果您不知道NaN的有效负载是什么,请不要担心。