【发布时间】:2014-12-11 20:52:46
【问题描述】:
我想将下面的字符数据转换为数字数据。但是 as.numeric 正在修剪一些信息。如何确保转换为数字后得到 1.00000000000000000000000000000001?
> a="1.00000000000000000000000000000001"
> as.numeric(a)
[1] 1
> as.numeric(a,10)
[1] 1
> as.numeric(as.character(a))
[1] 1
> as.double(a)
[1] 1
【问题讨论】:
-
这是关于 SO 的最常见问题之一。首先,您需要了解存储值和显示精度之间的差异(在
R中可以使用options之类的东西进行调整)。其次,您需要了解机器精度以及浮点数如何存储在二进制数字计算机中。比如a="1.00000000000001" sprintf('%1.20f',as.numeric(a)) [1] "1.00000000000000999201"第三,检查浮点值的精度限制。