为什么float的精度与double的精度相同?

Mac*_*ius -1 c# floating-point

在这两种情况下,运行此代码会产生相同的精度数

double test = 0.5d;
while (1d != 1d + test) {
    Console.WriteLine(test);
    test /= 2d;
}
Run Code Online (Sandbox Code Playgroud)

最后输出线:2,22044604925031E -16

float test2 = 0.5f;
while (1f != 1f + test2) {
    Console.WriteLine(test2);
    test2 /= 2f;
}
Run Code Online (Sandbox Code Playgroud)

最后输出线:2,220446E -16

根据官方的MSDN文档(浮点数精度数),浮点测试的输出应该类似于2,220446E- 7.我是否存在概念上的误解或编程错误?

qua*_*lap 6

概念上的误解.精度往往以小数点数表示,E之后的数字是指数,它告诉你这个数字有多大或多小.注意浮点数确实比双精度数小得多!