双精度可以精确表示的最大积分值是多少?

时间:2014-07-28 04:34:21

标签: r

我想要准确地表示大整数。什么范围的积分值可以用double精确表示?

1 个答案:

答案 0 :(得分:2)

如果您的机器使用IEEE双打,则尾数为52位。 领先1是隐含的。因此,尾数中的全比特一可以 表示值(2^53)-1(带有适当的指数)。 但是,任何2的幂(最多约+ - 1023)也可以精确表示,2^53是 2的力量。

这显示在R中,值为.Machine$double.digits(我机器上的53), 尾数(基数为2)的数字,包括隐含的前导1

因此,可以精确表示的最大整数值是 2^.Machine$double.digits,最小的是对这个值的否定。

示范:

2^.Machine$double.digits - 0:5
## [1] 9007199254740992 9007199254740991 9007199254740990 9007199254740989 9007199254740988 9007199254740987
2^.Machine$double.digits + 0:5
## [1] 9007199254740992 9007199254740992 9007199254740994 9007199254740996 9007199254740996 9007199254740996

- 2^.Machine$double.digits + 0:5
## [1] -9007199254740992 -9007199254740991 -9007199254740990 -9007199254740989 -9007199254740988 -9007199254740987
- 2^.Machine$double.digits - 0:5
## [1] -9007199254740992 -9007199254740992 -9007199254740994 -9007199254740996 -9007199254740996 -9007199254740996