整数浮点数除以自身保证为1.f?

时间:2017-06-30 12:28:51

标签: c++ floating-point

如果我写:

int x = /* any non-zero integer value */;
float y = x;
float z = y / y;

z是否保证正好是1.f?

2 个答案:

答案 0 :(得分:92)

如果您的C ++实现使用IEEE754,那么是的,这是有保证的。 (除法运算符需要返回最佳浮点值)。

y / y的{​​em>仅例外情况,1f y NaN +Inf },-Inf0f-0f,或者如果您位于int如此宽的平台上,以至于{{1}的某些实例无法表示没有将float设置为float+Inf 1 。抛开最后一点,在你的情况下,这意味着-Inf将产生唯一的例外。

IEEE754非常常见。但要检查确定,请测试

的值
int x = 0;

1 例如,具有128位std::numeric_limits<float>::is_iec559; 和IEEE754 32位int的平台将对float的某些值表现出这种行为。

答案 1 :(得分:31)

不,并非在所有情况下,即使是IEEE754。

例如,使用df['Age'] = pd.cut(df['Age'], [0,6,12,16,65,90] ,labels=['0-6','6-12','12-16','16-65','65-90']) ,您将获得NaN。 (Live