在R中将长值转换为double

时间:2015-03-20 17:18:02

标签: r

我将下面R中的值分配给var x,这是我从文件中读取的,当我打印它时,它显示了双格式。我希望能够存储没有小数的这个长数字,因为当我做一个REST帖子时,数据会被发布为double。我尝试过as.character(x),但是当对REST API执行POST时,它被视为字符串。有没有办法将此值保持为Long而不是十进制?

x <- 1426643216897

print(x)
[1] 1.426643e+12

Thranks

2 个答案:

答案 0 :(得分:3)

如果使用您不希望附加的字符,我建议在print函数中使用quote = FALSE。由于print也接受数字参数,您可以采用以下两种方式:

> print(as.character(x), quote=FALSE)
[1] 1426643216897
> print(x,  digits=20)
[1] 1426643216897

对战:

> print(as.character(x) )
[1] "1426643216897"

没有R长整数模式。您应该理解,超过9个基数为10位的数字是&#34;存储为小数&#34;,即以横坐标+尾数存储,但整数长度的明显增加是通过打印&#34; double&#34;的横坐标的精确转换不带小数点的基数为10的表示法。请注意,如果您明确尝试&#34;存储为整数&#34;:

会发生什么
> x <- 1426643216897L
Warning message:
non-integer value 1426643216897L qualified with L; using numeric value 

如果你需要存储一个长度超过53位二进制数字可以处理的数字,你需要使用字符存储,然后使用quote = FALSE选项或使用cat输出:

>  cat("test")
test

答案 1 :(得分:0)

在R环境中首先设置数字选项:

options(digits=22)