C#浮动和双重bug

时间:2014-07-21 07:22:43

标签: c#

我有这段代码:

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

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

1 个答案:

答案 0 :(得分:6)

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

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