0.2 + 0.3!= 0.5 ......浮点型问题

时间:2011-08-19 10:19:56

标签: c# .net floating-point

  

可能重复:
  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,但我想知道这里有什么问题。 感谢帮助。

1 个答案:

答案 0 :(得分:5)

浮点数不是精确值,它们是近似值。可能是公式为0.30000001 + 0.20000003(= 0.50000004)== 0.50000001,这会导致错误。

您应该检查2个值之间的差异是否真的很小。 More info here