我向我的女儿展示了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
一切正常,直到达到9位数。从最后一行可以看出,答案显然是错误的。它应该是1234567898765432 * 1 *,而不是1234567898765432 * 0 *。
我正在Macbook Pro笔记本电脑上的R(v3.6.1,x86_64-apple-darwin15.6.0、64位)中运行此文件。
有人说这可能是整数溢出引起的。这里有两个问题:
谢谢。
最佳答案
对于此类问题,我个人最喜欢的是软件包Rmpfr
,它是GNU MPFR Library的R软件包。
library(Rmpfr)
## 53 bit precision
ones9 <- mpfr(1111111111, precBits = 53)
ones9^2
#1 'mpfr' number of precision 53 bits
#[1] 1234567900987654400
## 100 bit precision
ones9b <- mpfr(1111111111, precBits = 100)
ones9b^2
#1 'mpfr' number of precision 100 bits
#[1] 1234567900987654321
关于r - 如何获得R中111111111 * 111111111的正确答案?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58476455/