为什么带有小数的字符的`as.numeric`会添加额外的数字

时间:2017-08-13 18:12:53

标签: r

options(digits = 18)
x <- 0.127272727272727287
str(x)
# num 0.127
x
#[1] 0.127272727272727287
as.character(x)
#[1] "0.127272727272727"
as.numeric(as.character(x))
[1] 0.12727272727272701

01来自哪里?这是怎么回事?

1 个答案:

答案 0 :(得分:3)

当您查看有关数字的部分时,会在帮助页面?options中暗示这一点。您可以将任意数字的位数设置为最多22个,但这并不意味着R将准确表示该数字。 R使用 IEEE double-precision。维基百科告诉我们这个表示有

  

符号位:1位
  指数:11位
  显着精度:53位(显式存储52位)

因此R将数字存储为log(2^53, 10) = 15.95459十进制数字的精确度。你得到的任何东西都是运气。