當輸入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