c - 浮点运算 "<"、 ">"是否可交换?

标签 c floating-point

浮点运算<是否可交换。 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/

相关文章:

c - 如何计算带位域的结构体的大小?

python - Clang + pycparser 无法从 CPython 3.7 解析 pythread.h header

c - 你如何处理离散的非整数集?

sql - SQL Server 2005中的浮点问题

c++ - 当一个相对较大的浮点值与两个相对较小的浮点值相乘时,消除误差的最佳算术顺序是什么

c++ - 区分零和负零

c++ - 传递无效指针时 `ferror(FILE *)` 和 `std::ferror(FILE *)` 的行为是什么?

c - 这些 Pointer 语句有何不同 *p = &i , h = &j?

c - 用 Clang 替代 -pg?

c - 浮点变量不会在 C 中递减 - 无限 while 循环