2016-09-14 60 views
1

我與quantmod monthlyReturn函數有奇怪的結果。這裏有一個例子:R和quantmod每月返回函數的奇數結果

require(quantmod) 

getSymbols("VOO") 

adj <- Ad(VOO["2010-09"]) 

monthlyReturn(adj) 

(as.numeric(tail(adj)[6]) - as.numeric(adj[1]))/as.numeric(adj[1]) 

最後兩個命令給出了相同的答案0.03559799

但是命令as.numeric(tail(adj)[6])as.numeric(adj[1])給我值分別爲92.8155689.62508和命令(92.81556 - 89.62508)/89.62508給出的值0.03559807這是正確的,但來自不同上面的例子。

有人請向我解釋什麼是錯的,爲什麼會有差異?

回答

1

當您打印這麼少的數字時,您將失去精確度。

options(digits=20) 
as.numeric(tail(adj)[6]) 
# 92.815557999999995786 
as.numeric(adj[1]) 
# 89.625084999999998558 

(as.numeric(tail(adj)[6]) - as.numeric(adj[1]))/as.numeric(adj[1]) 
#0.035597991343606506798 
(92.815557999999995786 - 89.625084999999998558)/89.625084999999998558 
#0.035597991343606506798