Excel VBA简单浮点算术运算触发运行时错误5
报错原因分析
核心触发原因是 VBA不支持对负数直接进行非整数次幂的乘方运算。
你调用函数时传入的参数d=-6,运算到(d/c)时得到的结果是负数,而你后续对这个负数执行^0.06的运算,0.06属于非整数指数,该操作在VBA中属于非法参数调用,直接触发运行时错误5。
你可以直接在VBA立即窗口执行Debug.Print (-1.714) ^ 0.06验证,会得到完全一致的报错。
补充注意:从数学层面看,指数0.06等价于3/50,分母为偶数,负数开偶次方在实数域本身就不存在有效结果,你的运算逻辑本身就要求
b/c、d/c的结果必须为正数,建议你先给函数增加参数合法性校验,避免传入不符合业务规则的负数参数。
如果你的业务场景确实需要兼容负数底数的运算,可以调整代码先对底数取绝对值再做乘方运算,示例修改如下:
Function f(a, b, c, d) Dim base_bc As Double, base_dc As Double base_bc = b / c base_dc = d / c ' 处理负数底数非整数次幂问题 base_bc = Abs(base_bc) base_dc = Abs(base_dc) f = 1.95 * a * base_bc ^ 0.06 * base_dc ^ 0.06 End Function
内容的提问来源于stack exchange,提问作者user32882
相关产品推荐
相关产品推荐

