求a=a mod b,a,b都是double型,计算过程中a为14位整数,b位7位整数,运行以后说是溢出,为什么?怎么解决?mod 到底是如何计算的。

解决方案 »

  1.   

    result = number1 Mod number2不管 result 是否为一个整数,result 的数据类型为 Byte,Byte 变体、Integer、Integer 变体、Long 或一个包含 Long 的 Variant。任何小数部分都被删除。也就是说 Mod 的结果缓冲区不超过 Long 类型长度,否则溢出。自己写一个长整数除法,被除数的余数部分很容易得到。
      

  2.   

    这么大的阿数就不要用mod了,用回基本的阿操作吧
    Private Sub Form_Click()
    Dim a As Double
    Dim b As Double
    Dim c As Double
    a = 99999999999998#
    b = 9999999
    c = a - Int(a / b) * b
    Debug.Print c
    End Sub