Dim num1
Dim num2
num1 = 353999257654394887936255
num2 = 3539992576543948861696211
定义成long会溢出不设置类型 它返回的好像是string,结果比较的时候num1 > num2 = true该怎么定义这个数据类型呢?

解决方案 »

  1.   

    Private Sub Command1_Click()
        Dim num1 As String
        Dim num2 As String
        num1 = "353999257654394887936255"
        num2 = "3539992576543948861696211"
        MsgBox Val(num1) > Val(num2)
    End Sub
      

  2.   

    把数值定义为字符串,自己写个比较函数,一点都不麻烦。
    单用val()比较,不正确.
    353999257654394887936255
    353999257654394886169621 比较时,不管是>还是<, 都是false
      

  3.   

    定义string 类型,比较的时候用strcmp().
      

  4.   

    虽然不够20位,也算提个醒吧:
    Currency 数据类型
          Currency 变量存储为 64 位(8 个字节)整型的数值形式,然后除以 10,000 给出一个定点数,其小数点左边有 15 位数字,右边有 4 位数字。这种表示法的范围可以从 -922,337,203,685,477.5808 到 922,337,203,685,477.5807。Currency 的类型声明字符为at号 (@)。Currency 数据类型在货币计算与定点计算中很有用,在这种场合精度特别重要。
      

  5.   

    DecimalDecimal 变量存储为 96 位(12 个字节)无符号的整型形式,并除以一个 10 的幂数。这个变比因子决定了小数点右面的数字位数,其范围从 0 到 28。变比因子为 0(没有小数位)的情形下,最大的可能值为 +/-79,228,162,514,264,337,593,543,950,335。而在有 28 个小数位的情况下,最大值为 +/-7.9228162514264337593543950335,而最小的非零值为 +/-0.0000000000000000000000000001。注意 此时,Decimal 数据类型只能在 Variant中使用,也就是说,不能声明一变量为 Decimal 的类型。不过可用 Cdec 函数,创建一个子类型为 Decimal 的 Variant。Private Sub Command1_Click()
        Dim num1 As Variant
        Dim num2 As Variant
        
        
        num1 = "3539992576543948879362551"
        num2 = "3539992576543948861696211"
        MsgBox CDec(num1) > CDec(num2)
    End Sub
      

  6.   

    Dim v As Variant
    v = CDec("3539992576543948879362551")
    Debug.Print Str(v)