我有这段代码:
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
这是一个错误还是我做错了什么? 这有什么解决方案吗?
答案 0 :(得分:6)
这不是一个错误。这是浮点数的基本属性。数字存储为尾数和指数,它们不能以完美的精度表示每个数字。如果需要精度,则必须使用小数类型。
有关此内容的大量信息,请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic