有一个奇怪的问题:
请高手指教:
在vb里
#16:20:00#/#00:01:00# 等于 980
Clng(#16:20:00#/#00:01:00#)也等于980
int(#16:20:00#/#00:01:00#) 却等于979为什么???

解决方案 »

  1.   

    测试
    Private Sub Command1_Click()
        MsgBox (#4:20:00 PM# / #12:01:00 AM#)
        MsgBox CLng(#4:20:00 PM# / #12:01:00 AM#)
        MsgBox Int(#4:20:00 PM# / #12:01:00 AM#)    MsgBox CInt(#4:20:00 PM# / #12:01:00 AM#)
    End Sub你使有CInt就不会有问题,区别在于CInt 函数 Integer -32,768 至 32,767,小数部分四舍五入 
    Int  函数  返回参数的整数部分
      

  2.   

    那就奇怪了 我用的是vb+sp5 win2k+sp4 amd1700+ nForce芯片的主板 
    我算#16:20:00#/#00:01:00# 就等于 980,后面没有小数了
      

  3.   

    可能这个int函数有问题,也可能是数据类型运算时我们看到的数值和
    实际内存中的数值不同造成的比如我用cbl() 或者 和你一样直接计算 #16:20:00#/#00:01:00# 也都是980只要加了int 值就是979,Int 函数返回小于或等于该参数之最大整数,如果这句描述没错的话,
    #16:20:00#/#00:01:00# 这个结果本身一定不是整数的
      

  4.   

    我的计算机测试都是980
    win2000 pro
    vb6
      

  5.   

    而且我用int(cdbl(#16:20:00#/#00:01:00#))得出的是980
    我是要算出分钟数,所以用Clng或者Cint都不符和我的要求,但用int出现这个情况
    害我调试了半天。
      

  6.   

    CInt(#16:20:00#/#00:01:00#) 却等于980
      

  7.   

    呵呵,知道问题在哪里就好,以后不随便使用int就好了
      

  8.   

    Int(#16:20:00#/#00:01:00#) 却等于979
    一个是舍掉小数  一个是四舍五入
      

  9.   

    Dim MyNumber
    MyNumber = Int(99.8)   ' Returns 99.
      

  10.   

    怀疑(#16:20:00#/#00:01:00#)的结果是
    979.99999999999999999999999999999999999999999999999999999循环如果转化成DOUBLE因为超过精度.
    最终还是被转化为 980
      

  11.   

    我测试的结果是980
    测试系统 WinXP 赛扬800 VB6
    不存在所说的问题
    而且(#16:20:00#/#00:01:00#)的结果是980.000000000001
      

  12.   

    我的计算机测试都是980
    win98 se
    vb6 
      

  13.   

    可能是intel跟amd的CPU不同吧,不知道有没有人正是这点?