R 和 quantmod monthlyReturn 函数的奇怪结果
Odd results with R and quantmod monthlyReturn function
我用 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.81556
和 89.62508
并且命令 (92.81556 - 89.62508)/89.62508
给出值 0.03559807
这是正确但与上述示例不同。
有人可以向我解释哪里出了问题以及为什么会有差异吗?
当你用这么少的数字打印数字时,你会失去精度。
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
我用 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.81556
和 89.62508
并且命令 (92.81556 - 89.62508)/89.62508
给出值 0.03559807
这是正确但与上述示例不同。
有人可以向我解释哪里出了问题以及为什么会有差异吗?
当你用这么少的数字打印数字时,你会失去精度。
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