运行此代码会在两种情况下产生相同的精度数
double test = 0.5d;
while (1d != 1d + test) {
Console.WriteLine(test);
test /= 2d;
}
最后输出行:2,22044604925031E -16
float test2 = 0.5f;
while (1f != 1f + test2) {
Console.WriteLine(test2);
test2 /= 2f;
}
最后输出行:2,220446E -16
根据官方MSDN文档(float和double),浮点测试的输出应该类似于2,220446E -7 。我是否存在概念上的误解或编程错误?
答案 0 :(得分:6)
概念上的误解。精度往往以小数点数表示,E之后的数字是指数,它告诉你这个数字有多大或多小。注意浮点数确实比双精度数小得多!