了解浮点精度
Posted
技术标签:
【中文标题】了解浮点精度【英文标题】:Understanding floating point precision 【发布时间】:2012-08-21 01:16:06 【问题描述】:是不是这样:
-
可表示的浮点值在接近零的实数行中最密集?
随着数轴远离零,可表示的浮点值变得越来越稀疏(呈指数增长?)?
如果以上两个为真,那是否意味着距离零精度较低?
总体问题:精度是否以某种方式指代或取决于您可以(准确)表示的数字的密度?
【问题讨论】:
是的,你的理解是正确的。 我的理解是 precision 对于所有可表示的数字都大致相同(例如,指定值的位数)。但是,准确度会随着远离零而降低。 【参考方案1】:术语精度通常是指表示值中有效数字(位)的数量。因此,精度随表示尾数中的位数(或位数)而变化。与原点的距离无关紧要。
你所说的是真实线上的浮动密度。但在这种情况下,正确的术语是准确度,而不是精确度。小幅度的 FP 数字比大的要准确得多。这与整数形成对比,整数在其范围内具有统一的精度。
我高度推荐论文What Every Computer Scientist Should Know About Floating Point Arithmetic,它涵盖了这一点以及更多内容。
【讨论】:
“准确度”可以指绝对准确度,对于浮点数,它有机会在接近零时更好,或者相对准确度,对于浮点数,它有机会保持一致。我认为,“精度”和“准确度”之间的区别更多地与“你拥有的位数”与“(某种计算)对它们的作用”有关。计算结果可以用 24 位二进制精度表示,但由于复合误差,(相对)精度仅为 2^-20。 你链接里的文章让我头疼。【参考方案2】:浮点数基本上以科学计数法存储。只要将它们归一化,它们就始终具有相同数量的有效数字,无论您在数轴上的哪个位置。
如果您以线性方式考虑密度,那么当您接近 0 时,浮点数的密度会呈指数级增长。
当您非常接近 0 并且指数达到最低点时,浮点数变得非规范化。此时,它们有 1 个额外的有效数字,因此更精确。
【讨论】:
【参考方案3】:答案:
-
可表示的浮点值在接近零的实数行中最密集?
是的
随着数轴远离零,可表示的浮点值变得越来越稀疏(指数?是)?
是的
如果以上两个为真,那是否意味着距离零更远的精度更低?
是的
总体问题:精度是否以某种方式指代或取决于您可以(准确)表示的数字的密度?
见https://***.com/a/24179424
我也推荐What Every Computer Scientist Should Know About Floating Point Arithmetic
【讨论】:
【参考方案4】:可表示的浮点值在接近零的实数线上最密集?
在 IEEE 754 浮点的完整实现中是的。
但是在不支持次正规的系统中,零附近存在一个间隙,该间隙远大于最小非零值与第二小的非零值之间的差。
随着数轴远离零,可表示的浮点值变得越来越稀疏(指数?)?
是的,每次该值超过 2 的幂时,相邻值之间的差距就会加倍。
如果以上两个为真,那是否意味着离零越远的精度越低?
这取决于您如何准确定义“精度”,可以从相对意义上(“重要数字”)或绝对意义上(“小数位”)谈论精度。
哪个更合适取决于这些数字的确切用途。如果浮点数用于坐标或时间戳等内容,则远离零时的精度损失往往会成为一个真正的问题。
【讨论】:
以上是关于了解浮点精度的主要内容,如果未能解决你的问题,请参考以下文章