当输入1e9999999999999999999999999999999
到R中时,R挂起并且不会响应 - 要求终止它。为什么数字1e9999 ...(31 9s)在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-09-15最晚,这更长的时间导致R挂起。他们必须修补它。
爱主流理论!顺便说一句 - 这也发生在我身上。也许是记忆的东西? – 2012-07-28 11:53:40
更好:'boom < - paste(c(“10 ^”,rep(9,31)),collapse =“”)'作品:P – nico 2012-07-28 11:58:27
这很有趣。看起来'1e9 ...'效果不好,但'1^9 ...'效果不错。 – 2012-07-28 12:12:41