当进入1e9999999999999999999999999999999
R 时,R 挂起并且不会响应 - 要求它被终止。
它似乎发生在 3 台不同的计算机、操作系统(Windows 7 和 Ubuntu)上。它发生在 RStudio、RGui 和 RScript 中。
这是一些更容易生成数字的代码:
boom <- paste(c("1e", rep(9, 31)), collapse="")
eval(parse(text=boom))
现在显然这不是一个实际问题。我不需要使用这种数量级的数字。这只是一个好奇的问题。
奇怪的是,如果你尝试1e9999999999999999999999999999998
或1e10000000000000000000000000000000
(从幂中加或减一),你会分别得到Inf
和0
。这个数字显然是某种界限,但在什么和为什么之间呢?
我认为它可能是:
- 一个浮点问题,但我认为它们的最大值为 1.7977e308,远早于所讨论的数字。
- 32 位整数的问题,但 2^32 是 4294967296,比所讨论的数字小得多。
- 真的很奇怪。这是我的主导理论。
编辑:最迟在 2015 年 9 月 15 日,这不再导致 R 挂起。他们一定已经修补过了。