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
来自哪里?这是怎么回事?
答案 0 :(得分:3)
当您查看有关数字的部分时,会在帮助页面?options
中暗示这一点。您可以将任意数字的位数设置为最多22个,但这并不意味着R将准确表示该数字。 R使用
IEEE double-precision。维基百科告诉我们这个表示有
符号位:1位
指数:11位
显着精度:53位(显式存储52位)
因此R将数字存储为log(2^53, 10) = 15.95459
十进制数字的精确度。你得到的任何东西都是运气。