При вводе 1e9999999999999999999999999999999
в R, R зависает и не будет отвечать - требуя его завершения.
Кажется, что это происходит на трех разных компьютерах, операционных системах (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. Они, должно быть, исправили его.