将float值与double进行比较会产生不同的行为

时间:2014-09-13 09:47:19

标签: c

我发现了很多问题。但没有人帮助我

      float x = 0.1;
      x == 0.1

上面的代码返回false。因为我试图将双精度值与单精度x进行比较。

      float x = 0.5
      x == 0.5

这个返回true。我不知道为什么它会回归真的?有什么建议??

编辑:那么如何识别哪个值在两个精度中具有相同的表示?

2 个答案:

答案 0 :(得分:5)

x == 0.1

0.1不是float类型,而是double类型。 floatdouble不具备相同的精确度。 0.1f的类型为float

为什么它与0.5一起使用是因为0.5floatdouble(二进制IEEE-754)类型中都有精确的表示形式。

答案 1 :(得分:0)

由于内存中浮动/双重表示,您会看到此行为。

请参阅strange output in comparison of float with float literal