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)
如何列出保存的确切值?
用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.
这只是R的7个有效数字的默认打印限制.要查看真正的基础值:
print(unique(c(0.100000000002, 0.100000000003), digits=15)
Run Code Online (Sandbox Code Playgroud)
要更改默认行为,请参阅?options; 你想要的东西options(digits=15).