【发布时间】:2016-01-01 08:39:39
【问题描述】:
并非所有十进制数都可以使用二进制浮点数精确表示。
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
实数可能不准确的原因有两个 可表示为浮点数。最常见的情况是 用十进制数 0.1 表示。虽然它有一个有限的 十进制表示,二进制表示无限重复 表示。
反过来呢?如果使用了足够的数字,每个 IEEE 754 浮点数是否可以用十进制数字精确表示?
【问题讨论】:
-
@harold 一些双精度数需要大约 750 个十进制数字(或多或少 52 + 1022 * (1 - log10(2)))
-
@harold 当我说 52 + 1022 * (1 - log10(2)) 时,我没有计算它们,但如果我想计算它们,它将是 52 + 1022。不计算前导零很简单:有效数字中的每个二进制数字和负指数的每个单位都需要一个十进制数字。
-
@harold 这个人说 767。“1 - log10(2)”是一个粗略的近似值,而不是精确的科学。 stackoverflow.com/a/17245451/139746
标签: binary floating-point numbers decimal ieee-754