我想在样本中获取所有不同的浮点值:
unique(c(0.100000000002, 0.100000000003))
但这只会返回两次0.1
不是唯一值的时间:
[1] 0.1 0.1
如何列出保存的确切值?
我想在样本中获取所有不同的浮点值:
unique(c(0.100000000002, 0.100000000003))
但这只会返回两次0.1
不是唯一值的时间:
[1] 0.1 0.1
如何列出保存的确切值?
使用sprintf
...
x <- unique(c(0.100000000002, 0.100000000003))
sprintf("%.20f", x)
#[1] "0.10000000000200000294" "0.10000000000299999470"
从帮助页面sprintf
...
f
双精度值,采用“[-]mmm.ddd”形式的“定点”十进制表示法。小数位数(“d”)由精度指定:默认为 6;精度为 0 会抑制小数点。非有限值被转换为 NA、NaN 或(可能是一个符号后跟)Inf。
这只是 R 的 7 个有效数字的默认打印限制。要查看真正的潜在价值:
print(unique(c(0.100000000002, 0.100000000003), digits=15)
要更改默认行为,请参阅?options
;你想要类似的东西options(digits=15)
。
干得好
options(digits=14)
unique(c(0.100000000002, 0.100000000003))