R错误地存储了大量数据
我试图在R Studio中开发一个程序,它需要用户输入任何他们想要的数字,甚至可以是巨大的数字。 所以我试着给出随机数,但遇到了一个问题。 当我每次输入一个巨大的数字时,R显示不正确。 我重新启动了R会话。。但问题依然存在。请帮忙。下面是我遇到的问题的快照R错误地存储了大量数据,r,R,我试图在R Studio中开发一个程序,它需要用户输入任何他们想要的数字,甚至可以是巨大的数字。 所以我试着给出随机数,但遇到了一个问题。 当我每次输入一个巨大的数字时,R显示不正确。 我重新启动了R会话。。但问题依然存在。请帮忙。下面是我遇到的问题的快照 您已经超过了用R的整数(32位有符号)表示的数据量:−2147483648至2147483647。根据Ben Bolker下面的评论,可以使用bit64包扩展到64位)。这将使您的范围从-9223372036854775808扩展到92233
您已经超过了用R的整数(32位有符号)表示的数据量:−2147483648至2147483647。根据Ben Bolker下面的评论,可以使用
bit64
包扩展到64位)。这将使您的范围从-9223372036854775808扩展到9223372036854775807
如果您需要更高的精度,请尝试gmp
库。请注意,整数以字符形式显示,以避免在处理之前对数字进行四舍五入的精度影响
options(scipen=99)
a1 <- 123456789123456789123456789
a1
[1] 123456789123456791346468826
a1 - (a1 -1)
[1] 0
# now using arbitrary-precision (big) numbers
library(gmp)
b1 <- as.bigz("123456789123456789123456789")
b1
Big Integer ('bigz') :
[1] 123456789123456789123456789
b1 - (b1 -1)
Big Integer ('bigz') :
[1] 1
选项(scipen=99)
a1您可能超出了此处数字/整数类型的精度。问:你真的需要担心几十亿/万亿的数字的十位精度吗?这是否回答了你的问题?我试图写一个程序,将数字转换成它的单词表示形式。因此,如果输入数字发生变化,它将不正确地显示单词表示。此外,如果您可以看到输入,则输出数字的位数与输入数字的位数相同,但数字不正确。回答正确,尽管base-R整数只有31位(和1个符号位):。Machine$integer.max
为2^31-1。有一个支持64位整数的bit64
包(但正如您所指出的,这远远超出了该范围)。