在C中,如果你有一个数字除以它,你能超过1.0吗?基本上,x / x(例如5.1 / 5.1)最终是否会大于1.0? x可以是float,double或long double。请注意,x / x不是文字代码,就像变量x本身一样。
我尝试搜索这个答案,但很难找到好的搜索字词。
答案 0 :(得分:6)
假设IEEE-754一致性,x/x
总是正好1.0
*,因为除法是一个正确舍入的基本操作,这意味着它返回最接近"的无限浮点数。精确"数学价值。
然而,有一些陷阱。例如,如果{C}实现中FLT_EVAL_METHOD
非零,并且x
实际上是(a+b)/(a+b)
之类的表达式,那么可以想象(不太可能,但已经观察到)某些优化设置的结果可能不完全等于1.0
。当然,如果您的编译器不符合IEEE-754,则所有投注均已关闭。
[*]或NaN。