【发布时间】:2018-04-04 04:41:34
【问题描述】:
我有一个 BigInt 号码。如果我尝试将它存储在 R
R> a <- 9223372036854775807
R> a
[1] 9.223372e+18
您可以注意到它丢失了最后几位数字的信息。我尝试了多种其他方法来解决这个问题,但没有运气,比如增加选项(数字 = 22)或更改为数字、双精度、整数。
> as.integer(9223372036854775807)
[1] NA
Warning message:
NAs introduced by coercion to integer range
R> as.numeric(9223372036854775807)
[1] 9.223372e+18
R> as.double(9223372036854775807)
[1] 9.223372e+18
谁能帮我解决这个问题。我想保留相同的原始值。我也不想安装任何外部包。
【问题讨论】:
-
您可能需要检查
gmp包或bit64即library(gmp);as.bigz(a) -
试试
options(scipen = 99),但我认为它仍然会丢失精度。 -
@RonakShah: 它仍然失去精度 R> options(scipen = 99) R> as.numeric(9223372036854775807) [1] 9223372036854777856 R> as.double(9223372036854775807) [1] 92238372s3847785607 >
-
@akrun : 很遗憾无法安装外部包
-
在这种情况下,你会失去这么大的数字精度。
标签: r