浮点运算<是否可交换。 fabs(a) < fabs(b) 与 fabs(b) > fabs(a) 相同吗?
最佳答案
如果您的意思是 fabs (a) < fabs (b) 与 fabs (b) > fabs (a):是的,它们在 IEEE754 兼容平台上是相同的。即使有 NaN、无穷大、正零和负零。
在某些实现中,浮点运算并不总是使用相同的精度。如果计算 x * y,并且 x、y 是浮点值,则结果可能是浮点型或 double 型。因此,如果您计算 fabs (x * y) < fabs (u * v),则 x * y、u * v 或两者都可以以 double 计算,或者如果所有四个都是 float ,则可能都不以 double 计算。因此,两个产品可能相等,也可能不相等(如果它们一开始就很接近)。在这种情况下,fabs (x * y) < fabs (u * v) 与 fabs (u * v) > fabs (x * y) 可能会给出不同的结果。但在这种情况下,这是你最不用担心的。我不知道任何新的编译器会发生这种情况。
关于c - 浮点运算 "<"、 ">"是否可交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165620/