在比较三个浮点数时双重不等式

时间:2015-12-21 05:01:29

标签: c++ floating-point

有人可以告诉我为什么以下不起作用?(我的意思是没有输出)

if(0.0001<0.001<0.01)   
    cout<<"hi\n"<<endl;
output:    (blank)

以下工作原理:

if(0.0001<0.001 && 0.001<0.01)  
    cout<<"hi\n"<<endl;
  output:hi

1 个答案:

答案 0 :(得分:5)

因为C ++中没有神奇的n-ary GCM运算符。

<
解析

(因为0.0001 < 0.001 < 0.01 是左关联的)为

<

(0.0001 < 0.001) < 0.01 返回值0.0001 < 0.001的值为bool的值。现在你有了

true

但根据标准,当转换为整数类型时,true < 0.01 布尔值为1,因此您有

true

这是假的。