获取R中浮动的确切值?

R_U*_*ser 3 floating-point r unique floating-accuracy

我想在样本中获取所有不同的浮点值:

unique(c(0.100000000002, 0.100000000003))
Run Code Online (Sandbox Code Playgroud)

但这只返回两次0.1不是唯一值:

[1] 0.1 0.1
Run Code Online (Sandbox Code Playgroud)

如何列出保存的确切值?

Sim*_*lon 5

sprintf...

x <- unique(c(0.100000000002, 0.100000000003))
sprintf("%.20f", x)
#[1] "0.10000000000200000294" "0.10000000000299999470"
Run Code Online (Sandbox Code Playgroud)

帮助页面sprintf...

f
双精度值,以"[ - ] mmm.ddd"形式的"定点"十进制表示法.小数位数("d")由精度指定:默认值为6; 精度为0会抑制小数点.非有限值转换为NA,NaN或(可能是符号后跟)Inf.


Hon*_*Ooi 5

这只是R的7个有效数字的默认打印限制.要查看真正的基础值:

print(unique(c(0.100000000002, 0.100000000003), digits=15)
Run Code Online (Sandbox Code Playgroud)

要更改默认行为,请参阅?options; 你想要的东西options(digits=15).