【发布时间】:2013-07-30 14:27:00
【问题描述】:
我猜这个问题的另一种表述方式是,使用仅介于 0 和 1 之间的 float 可以达到小数点几位?
我试图通过查看MSDN 来解决这个问题。其中表示精度为 7 位。我认为这意味着它只能跟踪 0.0000001 的变化。
但是如果我这样做:
float test = 0.00000000000000000000000000000000000000000001f;
Console.WriteLine(test);
它写出9.949219E-44
如果我再添加零,它将输出0。
我很确定我在这里遗漏了一些东西,因为这种精确度似乎大错特错。主要是因为浮点数的大小是 32 位,而从 0 到 1 的精度级别包含 1e+44 个可能的数字...
【问题讨论】:
-
这是 7 个重要数字。但是你也需要考虑非正规数等。
-
维基百科文章开始于:Single-precision floating-point format 和 Subnormal number。
-
另一个跟进:floating point types 上的语言规范
-
this converter 可以帮助您熟悉
float的真正工作原理。 -
您错误地假设
float具有绝对精度。相反,它的精度会随着规模的变化而变化。
标签: c# floating-point ieee-754