我刚刚开始学习r并在遇到这个问题时进行了一些实验。
我的代码是:
options(digits=20)
i <- 0:20
10^i +1
我的输出如下:
## [1] 2 11 101
## [4] 1001 10001 100001
## [7] 1000001 10000001 100000001
## [10] 1000000001 10000000001 100000000001
## [13] 1000000000001 10000000000001 100000000000001
## [16] 1000000000000001 10000000000000000 100000000000000000
## [19] 1000000000000000000 10000000000000000000 100000000000000000000
为什么最后5个值最后缺少一个?对不起,如果这一切都很混乱。我也是新来的。
感谢您的帮助。
答案 0 :(得分:1)
我不确定通过评论向您提供的“提示”是否有用,但基本上您所看到的是在计算机中存储非常大的数字的限制。在某些时候,您到达计算机可以再代表该数字的点。这也适用于非常小的数字。这有时被称为“溢出”或“下溢”。示例的要点
identical(10^15, (10^15 + 1))
identical(10^16, (10^16 + 1))
指出10 ^ 15可以正确处理,但是10 ^ 16不能,你已经达到了突破点。 ?.Machine
的帮助页面讨论了一些技术细节。还有一些信息here,但所有这些讨论都很快就能获得技术。