3

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

unique(c(0.100000000002, 0.100000000003))

但这只会返回两次0.1不是唯一值的时间:

[1] 0.1 0.1

如何列出保存的确切值?

4

3 回答 3

5

使用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。

于 2013-06-06T09:54:42.317 回答
5

这只是 R 的 7 个有效数字的默认打印限制。要查看真正的潜在价值:

print(unique(c(0.100000000002, 0.100000000003), digits=15)

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

于 2013-06-06T09:56:31.077 回答
2

干得好

    options(digits=14)
    unique(c(0.100000000002, 0.100000000003))
于 2013-06-06T10:22:43.470 回答