小编Xia*_*jun的帖子

如何获得R中111111111 * 111111111的正确答案?

我正在向女儿展示R中两个111..111数乘法的魔术模式,例如

> options(scipen=999)
> 1^2
[1] 1
> 11^2
[1] 121
> 111^2
[1] 12321
> 1111^2
[1] 1234321
> 11111^2
[1] 123454321
> 111111^2
[1] 12345654321
> 1111111^2
[1] 1234567654321
> 11111111^2
[1] 123456787654321
> 111111111^2
[1] 12345678987654320
Run Code Online (Sandbox Code Playgroud)

一切正常,直到达到9位数。从最后一行可以看出,答案显然是错误的。它应该是1234567898765432 * 1 *,而不是1234567898765432 * 0 *。

我在Macbook Pro笔记本电脑上的R(v3.6.1,x86_64-apple-darwin15.6.0,64位)中运行此文件。

有人说这可能是整数溢出引起的。这里有两个问题:

  1. 谁能解释这是怎么发生的?例如,最后一个1如何变为0?

  2. 如何在R中获得正确答案?

谢谢。

r integer-overflow

5
推荐指数
1
解决办法
59
查看次数

标签 统计

integer-overflow ×1

r ×1