我发现了很多问题。但没有人帮助我
float x = 0.1;
x == 0.1
上面的代码返回false。因为我试图将双精度值与单精度x进行比较。
float x = 0.5
x == 0.5
这个返回true。我不知道为什么它会回归真的?有什么建议??
编辑:那么如何识别哪个值在两个精度中具有相同的表示?
答案 0 :(得分:5)
x == 0.1
0.1
不是float
类型,而是double
类型。 float
和double
不具备相同的精确度。 0.1f
的类型为float
。
为什么它与0.5
一起使用是因为0.5
在float
和double
(二进制IEEE-754)类型中都有精确的表示形式。
答案 1 :(得分:0)
由于内存中浮动/双重表示,您会看到此行为。