为什么R为某些值打印错误的答案?

时间:2016-01-17 21:51:08

标签: r

我刚刚开始学习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个值最后缺少一个?对不起,如果这一切都很混乱。我也是新来的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不确定通过评论向您提供的“提示”是否有用,但基本上您所看到的是在计算机中存储非常大的数字的限制。在某些时候,您到达计算机可以再代表该数字的点。这也适用于非常小的数字。这有时被称为“溢出”或“下溢”。示例的要点

identical(10^15, (10^15 + 1))
identical(10^16, (10^16 + 1))

指出10 ^ 15可以正确处理,但是10 ^ 16不能,你已经达到了突破点。 ?.Machine的帮助页面讨论了一些技术细节。还有一些信息here,但所有这些讨论都很快就能获得技术。