为什么exp(log(6))== exp(log(3))* 2在R中返回FALSE?

时间:2013-07-15 08:49:24

标签: r precision double-precision

在R中,为什么y为> 2?

y <- c(1, 2, 3, 4, 5)
x <- 2*y
exp(log(x)) == exp(log(y)) * 2
[1]  TRUE  TRUE FALSE FALSE FALSE

2 个答案:

答案 0 :(得分:4)

数字精度。尝试计算差异:

exp(log(x)) - exp(log(y)) * 2

您可以使用以下内容:

all.equal( exp(log(x)) , exp(log(y)) * 2 )

答案 1 :(得分:1)

确切地说,数字精度是原因。试试这个,甚至更简单的计算

1/2+1/3+1/6 #equal to 1    
(1/2+1/3+1/6)-1 # should be 0
[1] -1.110223e-16