Private Sub Command1_Click()
    Dim k As Double
    Dim n As Double
    
    k = 1.9
    n = 1
    MsgBox (k - n)
End Sub结果是.9Private Sub Command1_Click()
    Dim k As Double
    Dim n As Double
    
    k = 19.9
    n = 19
    MsgBox (k - n)
End Sub
结果是0.899999999怎么处理比较好?

解决方案 »

  1.   

    MsgBox format((k - n),"###0.00")
      

  2.   

    小数处理(主要是加减)要求精确值的话可用Currency类型。原因无它,Currency是用来算钱的,误差不得:)Private Sub Command1_Click()
    Dim k As Currency
    Dim n As Currencyk = 19.9
    n = 19
    MsgBox (k - n)
    End Sub
      

  3.   

    '将MsgBox (k - n)改成下面这个这搞定了:
    MsgBox Round(k - n, 2)
      

  4.   

    呵呵,这是由于数据在内存中的存储引起的,你可以查阅一下有关Double数据在内存中的存储
      

  5.   

    MsgBox format((k - n),"###0.00")
      

  6.   


    Private Sub Command1_Click()
        Dim k As Double
        Dim n As Double
        
        k = 19.9
        n = 19
        Debug.Print CDec(k) - n '强制转换一个数就可以了
        Debug.Print CCur(k) - n
        Debug.Print CDec(k) - CDec(n)
        Debug.Print CCur(k) - CCur(n)End Sub
      

  7.   

    MsgBox format((k - n),"###0.00")
      

  8.   

    double/float/single是浮点数,有精度的.
      

  9.   

    MsgBox format((k - n),"###0.00")

    MsgBox Round(k-n,2) 
    都可以