以下代码是用C#语言写的,测试的内容是把10000个0.1相加的结果,理论上结果应该是1000,但实际上呢?
首先是单精度浮点数float,结果是999.9029
static void Main(string[] args)
{
float sum = 0;
for (int i = 1; i <=10000; i++)
{
float add = 0.1f;
sum += add;
}
Console.WriteLine(sum);
Console.ReadKey();
}
其次是双精度浮点数double,结果是1000.00000000016(小数点后九个“0”)
static void Main(string[] args)
{
double sum = 0;
for (int i = 1; i <=10000; i++)
{
double add = 0.1;
sum += add;
}
Console.WriteLine(sum);
Console.ReadKey();
}
最后是浮点数decimal,结果是1000.0(不等于没有误差)
static void Main(string[] args)