2013-06-06 27 views
3

我希望得到一个样品中所有不同的浮点值:获取R中花车的精确值?

unique(c(0.100000000002, 0.100000000003)) 

但这仅返回哪些不是唯一值的两倍0.1

[1] 0.1 0.1 

我如何可以列出确切值得救了吗?

回答

5

这只是R的7个有效数字的默认打印限制。要看到真实的基本价值:

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

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

5

使用sprintf ...

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

help pagesprintf ...

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

2

在这里你去

options(digits=14) 
    unique(c(0.100000000002, 0.100000000003)) 
+1

这是一样的@HongOoi的答案,因此重复的信息。 –

+1

是的。对不起。在发布之前我没有阅读他的回答。 – Avinash