运行时错误6溢出



我遇到了这个错误,即使我所有的数据类型都很好。

运行时错误6溢出

这是功能:

Function equation(x As Long) As Long
    Dim a As Long, b As Double
    a = Int(((x - 2) Mod 8) / 6) + 2 * Int((x - 2) / 8)
    b = (x + a - 1) / 2
    equation = Abs(4 * b + 5 + 2 * Int(b))
End Function

x = 572662307说溢出时会遇到错误。

x = 572662307。是32位签名整数(约20亿(的最大值的四分之一,因此您的算术操作可能确实会击中。

在VBA Long中是一个32位签名的整数,并且不是C#中的64位签名整数。我建议将ax同时更改为Double

您也可以扩散您的功能,因此您可以检查调试器中的所有中间步骤:

Function equation(x As Double) As Double
    Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double, g As Double
    a = (x - 2) Mod 8
    b = a / 6
    b = Int( b )
    c = (x - 2) / 8
    d = 2 * Int( c )
    e = b + d
    f = (x + a - 1)
    f = f / 2
    g = 4 * b + 5 + 2 * Int( f )
    equation = Abs( g )
End Function

最新更新