C浮点:x / x可以是> 1.0?

时间:2014-08-25 23:06:53

标签: floating-point floating-point-precision

在C中,如果你有一个数字除以它,你能超过1.0吗?基本上,x / x(例如5.1 / 5.1)最终是否会大于1.0? x可以是float,double或long double。请注意,x / x不是文字代码,就像变量x本身一样。

我尝试搜索这个答案,但很难找到好的搜索字词。

1 个答案:

答案 0 :(得分:6)

假设IEEE-754一致性,x/x总是正好1.0 *,因为除法是一个正确舍入的基本操作,这意味着它返回最接近"的无限浮点数。精确"数学价值。

然而,有一些陷阱。例如,如果{C}实现中FLT_EVAL_METHOD非零,并且x实际上是(a+b)/(a+b)之类的表达式,那么可以想象(不太可能,但已经观察到)某些优化设置的结果可能不完全等于1.0。当然,如果您的编译器不符合IEEE-754,则所有投注均已关闭。

如果x为零或无穷大或NaN,则

[*]或NaN。