如何将数字 10000000000000000000000000000001 转为字符 “10000000000000000000000000000001”用format(10000000000000000000000000000001)="1E+31"
用cstr(10000000000000000000000000000001)="1E+31"有什么简便的方法吗?

解决方案 »

  1.   

    查一下格式化参数,我不记得了,我这儿也没有VB6的MSDN
      

  2.   

    Dim str1 As String
        
        str1 = Format(1E+31, "0000000000000000000000000000000")
        MsgBox (str1)
      

  3.   

    楼上的方法我也试过:
    Format(10000000000000000000000000000001, "0000000000000000000000000000000")="10000000000000000000000000000000" 注意最后一个是0不是1,另外
    10000000000000000000000000000001只是一个例子值,不一定知道多少位的。
      

  4.   

    Dim str1 As String
        str1 = Format(1E+31, "0")
        MsgBox (str1)这个可以,你不要管多少个0,都给你规整了
      

  5.   

    Dim i As Double
    Dim str1 As Stringi = 1E+31
    str1 = Format(i, "0")
    MsgBox (str1)
      

  6.   

    不过如果你的太长,连 Double存放都要丢失精度的话还是用
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)写成Byte(),一个字节一个字节的读写,就没问题了
      

  7.   

    注意:最后是个1Dim i As Double
    Dim str1 As Stringi = (1E+31 )+1 
    str1 = Format(i, "0")
    MsgBox (str1)得出的是10----------00而不是需要的10----------01
      

  8.   

    大家不是很理解格式化参数怎么指定吧?指定“0”是坚决不行的。
    关于用FORMAT函数格式化,楼主测试以下代码:
    Option ExplicitPrivate Sub Form_Click()
    Dim mD As Double
    Dim mS As String
    mD = 10 ^ 31 + 1
    mS = Format(mD, "01")
    Print mS, Len(mS)
    End Sub如果你把MD声名成VARIANT都溢出,那你的数据处理可能存在问题了。可以考虑用BYTE数组。
      

  9.   

    简要说明一下,指定“01”可以适用于楼主的例子,如果楼主的数字里还有23456789,那测试时会怎么样呢?呵呵,也挺有趣的,那就指定“0123456789”就行了吧?那我指定“9876543210”、“1357924680”…………行不行呢,是不是包含了里面的数字和顺序就没关系了呢希望刚才回答错误的同志测试一下。我也不是什么高手,只是想了想FORMAT函数是怎么处理的这个“格式化”操作的,非常有趣,FORMAT的原函数是个值得学习的东西。
      

  10.   

    mS = Format(mD, "01")01是不行的,正如楼上的所说,数字是不确定的。
      

  11.   

    数字 10000000000000000000000000000001 在VB6中能放在什么类型的变量中而不丢失精度呢?这不是什么Format函数 或 FormatNumber函数 的问题。碰到这种数字,建议用几个变量(或用一个数组)来拼凑。
      

  12.   

    用10000000000000000000000000000001 只是一个说明。
    用1000000000000000000001 少了10个0也是有一样的问题。
    变量用double就行。
      

  13.   

    double 有这么高的精度?1000’000’000’000’000’000’001,22位啦!double 16位精度。
      

  14.   

    我记得好像是
    format(1E+31,"general number")
      

  15.   

    实在难以忍受了!!!!!!!!!!!!!!!!!把你的字符COPYMONEY,到一个2进制数组,然后把数组转化成字符串,完了,就这办法了。非常郁闷。我的代码我测试好用,别人测试就不好用了?????????
      

  16.   

    好像有个Decimal类型(只能放在Variant里面), 不知道够不够放得下?
      

  17.   

    TO zcsor:不想用API,这样太复杂。
    To viena:还是最后少了一个1.
    另外数字15位以上就自动转为1E+ 了,不好处理。
    不一定需要31位的。
    real(1E+38)  Double(1E+308)都能放。