【发布时间】:2019-09-18 13:27:54
【问题描述】:
我有两对数字 (155.11 , 155.35) 和 (154.95 , 155.19),它们的差值都是 0.24。在matlab中,如果我计算
(155.11 - 155.35) - (154.95 - 155.19),matlab会输出2.8422e-14,即2^(-45)。我知道这是浮点数表示的机器分辨率问题,但对细节很好奇,为什么是这个值? 45有什么特别之处?
【问题讨论】:
-
它来自数据类型,即它是16位还是32位数字。 eps 是给定位长的最小可能精度。
-
class(155.11 - 155.35) 是双精度的,应该有更高的精度 52 而不是 45?
-
@BlueRineS,
esp是浮点相对精度。 -
@obchardon 相对 w.r.t.什么?
-
所有浮点数都达不到,所以
esp('single')是1与下一个更大的单精度数的距离。所以在这种情况下,它是相对于1。
标签: matlab floating-point binary rounding precision