R和quantmod monthlyReturn函数的奇数结果

时间:2016-09-14 22:50:11

标签: r xts quantmod

我使用quantmod monthlyReturn函数得到奇怪的结果。这是一个例子:

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 个答案:

答案 0 :(得分: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