获取R中浮动的确切值?

时间:2013-06-06 09:48:06

标签: r floating-point unique floating-accuracy

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

unique(c(0.100000000002, 0.100000000003))

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

[1] 0.1 0.1

如何列出保存的确切值?

3 个答案:

答案 0 :(得分:5)

使用sprintf ...

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

来自sprintf的{​​{3}} ...

  

˚F
  双精度值,在“定点”十进制表示法中   表格“[ - ] mmm.ddd”。小数位数(“d”)由指定   精度:默认为6;精度为0会抑制   小数点。非有限值转换为NA,NaN或(可能是   一个标志,然后是)Inf。

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:2)

你去吧

    options(digits=14)
    unique(c(0.100000000002, 0.100000000003))
相关问题