可能重复:
C# float bug? 0.1 - 0.1 = 1.490116E-08
problem in comparing double values in C#
在我的应用程序中,我想测试float a = float b,然后执行一些操作。但是,我想知道,在浮点型0.2 + 0.3 == 0.5中返回false。
所以这是我的代码的一部分
float a = 0.3f;
float b = 0.2f;
float c = 0.5f;
if (a + b == c)
Console.WriteLine("true");
else
Console.WriteLine("false");
Console.WriteLine(a+b);
Console.WriteLine(c);
这是本部分的结果
false
0.5
0.5
我无法弄清楚这里有什么问题...我可以使用double或decimal而不是float,但我想知道这里有什么问题。 感谢帮助。
答案 0 :(得分:5)
浮点数不是精确值,它们是近似值。可能是公式为0.30000001 + 0.20000003(= 0.50000004)== 0.50000001,这会导致错误。
您应该检查2个值之间的差异是否真的很小。 More info here