a = 23
b = Int((a * Rnd) + 1)
d = Len(Str$(b))
Print dd应该等于2的呀,为什么有时是2,有时是3呀

解决方案 »

  1.   

    Rnd是产生一个大于等于0小于1的随机数。当它产生的随机数小于9/23时,Int((a * Rnd) + 1)的结果是一个范围在[1, 9]区间的整数,Len(Str$(b))是2。当它产生的随机数大于等于9/23时,Int((a * Rnd) + 1)的结果是一个范围在[10, 23]区间的整数,Len(Str$(b))是3。这样的结果一点也不奇怪啊。
      

  2.   

    原因出在“b = Int((a * Rnd) + 1)”,b的值是1-23之间的一个随机数啊。
      

  3.   

    问题是:我得出的
    print d
    一下子是2, 一下子是3用23得出的随机数,最多也就两位,我用LEN函数计算b的字符串的位数,也就应该是等于2的呀。
      

  4.   

    Str 函数
          返回代表一数值的 Variant (String)。语法Str(number)必要的 number 参数为一 Long,其中可包含任何有效的数值表达式。说明当一数字转成字符串时,总会在前头保留一空位来表示正负。如果 number 为正,返回的字符串包含一前导空格暗示有一正号。
      

  5.   

    也就是说:Str$(23)=" 23",长度为3
      

  6.   

    是str$的问题,把str$改为CStr
    d = Len(CStr(b))
      

  7.   

    b 是1 到23的整数
     str(b) 是包含符号的也就是 ' 22' ' 3' 而不是"22" "3" 当b是小于10数就是2位,大于等于10数就是3位
      

  8.   

    同意faysky2
    改成cstr就好了
    最近不知道怎么搞的,现在用str$()经常出错,莫名其妙的
      

  9.   

    我从来就没有胜过STR$.一直都在用CSTR
      

  10.   

    谢谢大家,终于搞定了,还是用CSTR