'A mod B,当 A 取值长度大于数据范围时,溢出错误
 8888888845456221222 Mod 57
 88888888454562212228 \ 57
'请问这类问题该怎么处理呢?

解决方案 »

  1.   

    Mod 运算返回byte型,怎么才能突破呢?
    long 型长度也只有10位,根本决绝不了问题。
      

  2.   

    用Dec数据类型
    用法:
    Dim a as variant
    a = cdec(1)
    a = 8888888845456221222 Mod 57
      

  3.   

    这与Mod无关!是你的数据本身就已溢出了!
      

  4.   

    Option ExplicitPrivate Sub Command1_Click()
    Dim a As Variant
        a = CDec(1)
        a = 8.88888884545622E+18 / 57
        Text1 = a
    End Sub
    结果:
    1.55945418341337E+17
      

  5.   

    8888888845456221222 自动变成了8.88888884545622E+18 在VB IDE
      

  6.   

    Msdn里写着 mod 返回byte型
    除数取整也是返回long型老板布置的题目啊!
    就是要自己写算法,
    我弄了一个下午也没有搞出来,
    在vc中就没有这个限制了,哎,郁闷。
    哪位大哥帮忙啊!
      

  7.   

    我的程序是在VB的IDE上调试过的。结果也是在运行后从文本框里复制来的。你要“自己写算法”,怎么不早说?
      

  8.   

    “Msdn里写着 mod 返回byte型”?Msdn里:
    在进行 Mod 运算或求余数运算时,该运算符将 number1 用 number2 除(将浮点数字四舍五入成整数),并把余数作为 result 的值返回。例如,在下列表达式中,A (result) 等于 5。A = 19 Mod 6.7一般说来,不管 result 是否为一个整数,result 的数据类型为 Byte,Byte 变体、Integer、Integer 变体、Long 或一个包含 Long 的 Variant。任何小数部分都被删除。但是,如果任何一个 Null,类型的表达式出现时,result 都将是 Null。任何 Empty 类型表达式都作为 0 处理。
      

  9.   

    “Msdn里写着 mod 返回byte型”?
    --------------------------------
    呵呵!楼主具有超强的断章取义的能力!