我不太清楚溢出错误,所以我在这里很茫然。
在VBA中编写我正在调用一个VBA函数,它是一个来自dll的C ++函数的包装器(我无法访问内部函数)。 VBA / C ++函数返回一个double。它是使用数值方法的衍生估值。
昨天一段时间(但它现在可能已经消失)我在尝试将函数返回给声明为double的变量时遇到溢出错误。 但在错误停止时,我可以在本地窗口(8.17 ...)中看到分配给double的正确值。当我改为将函数返回给变量时,我得到相同的值而没有错误,变量是Variant / Double类型。
知道这里会发生什么吗?我完全迷失了。提前感谢任何想法。 [R
编辑:我尝试的另一件事是在将CDbl分配给变量时将CDbl应用于函数返回。这是一些伪代码,只是为了澄清我的案例:
Dim db as Double, va as Variant
db = DerivativeValue(a, b, c...)
这会产生溢出,但db在locals窗口中有错误的正确值。
va = DerivativeValue(a, b, c...)
没有错误,同样的价值。 va是Variant / Double类型
va = CDbl(DerivativeValue(a, b, c...))
现在再次溢出。我忘了在这种情况下va在Locals窗口中做了什么,但可能与案例1相同。
答案 0 :(得分:0)
我的猜测是该函数返回的值看起来像是double但不是。
变体旨在获取任何类型的值,并且赋值将执行转换。我想知道变量的赋值是否有效,因为它可以将返回的值转换为double。
如果您尝试以下操作会发生什么:
va = DerivativeValue(a,b,c...)
db = va
如果这样可行,它将让您继续开发,而无需等待发现函数实际返回的内容。
额外点。 double是64位浮点数。如果你有一个FPU,它可能会返回一个80位的浮点数。