【发布时间】:2017-06-08 08:51:06
【问题描述】:
一个方程产生这个值作为变量/双 X:36.0418746812314
但是:
X Val(X) 为真
X CStr(X) 为假
X CDdl(X) 为假
Val() 如何改变值?
在观察列表中查看时,应用 X = Val(X) 似乎不会改变 X 的值或类型。但不知何故它是不同的。
例如:
A = X - Val(X) 非常小,但不为零 (2.1316282072803E-14)。
B = X - CStr(X) 非常小,但不为零 (2.1316282072803E-14)。
C = X - CDbl(X) 为零。
更新: 感谢大家的回复和回答。这里有一些额外的背景。
股息调整收盘价的公式。据报道被雅虎财经使用。
A1 = A0 + A0 * (((P1 / S) - P0 - D) / P0)
分割和股息调整收盘价
股票代码:INTC
日期:1980 年 8 月 29 日,星期五
0.306757021582758(雅虎财经计算)
0.306757021582704(我的 VBA 计算)
将 A1 转换为字符串 CStr(A1) 或应用 Val(A1),然后我的 VBA 结果与 Yahoo Finance 计算值匹配。
这并不是真正的实质性差异,但很高兴了解为什么以及如何使其匹配以进行公式验证。
公式来源、组件细节和解释。
“雅虎如何计算调整后的收盘价”
http://marubozu.blogspot.com/2006/09/how-yahoo-calculates-adjusted-closing.html
【问题讨论】:
-
您确定这是
X的确切值吗?我刚刚测试并获得了所有测试的False。 (FWIW -X <> CStr(X)隐式等于CStr(X) <> CStr(X)因为 VBA 需要在执行比较之前执行类型转换。)
标签: vba