【问题标题】:C# float and double bug [duplicate]C#浮点和双错误[重复]
【发布时间】:2014-07-21 15:24:13
【问题描述】:

我有这个代码:

static void Main()
{
    float i;

    for (i = 0; i <= 100; i = i + 0.01F)
    {
        Console.WriteLine(i);

    }

}

它打印给我这个:

0
0.01
0.02
0.03
0.04
0.05
0.05999999
0.06999999
0.07999999
0.08999999
0.09999999
0.11

这是一个错误还是我做错了什么? 有什么解决办法吗?

【问题讨论】:

标签: c#


【解决方案1】:

这不是错误。这是浮点数的基本属性。这些数字存储为尾数和指数,它们不能以完美的精度表示每个可能的数字。如果需要精度,则必须使用小数类型。

有关此的大量信息,请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic

【讨论】:

  • 这不是错误,而是一项功能。 :)
  • 谢谢,十进制对我有用。
猜你喜欢
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多