2

as.numeric(as.character(1363821605424526000))结果1363821605424526080

为什么以及如何防止这种情况发生?

4

1 回答 1

3

一种解决方案是使用该gmp库(GNU Multiple Precision库)来创建和使用大整数进行基本算术...

require(gmp)
as.bigz("1363821605424526000")
#Big Integer ('bigz') :
#[1] 1363821605424526000

注意"整数的使用。这是为了保护它不被 R 解析为numeric数据类型,这当然不能在给定的数据结构中准确地表示这个数字。让 R 在将其转换为类型"之前将其视为字符变量。as.bigzbig integer

例子

as.bigz("1363821605424526000") + 1
#Big Integer ('bigz') :
#[1] 1363821605424526001

as.bigz("1363821605424526000")^3
#Big Integer ('bigz') :
#[1] 2536720967038413127881466345733319337545403576000000000
于 2013-11-01T10:03:19.597 回答