VB把浮点数赋值给整型是怎么样的机制?
dim c as long
c=2.5
(msgbox c 显示2)
c=3.5
(msgbox c 显示4)
于是我就晕了求救

解决方案 »

  1.   

    IEEE浮点数的表示方法你可以看看的,并不是你想象的那么简单,但是你可以用四舍五入法搞定:Public Function fRound(num As Variant, n As Long) As String
         fRound = Format(num, IIf(n > 0, "0." & String(n, "0"), "0"))
    End FunctionPrivate Sub Command1_Click()
         Dim a As Double
         a = 1234.56789
         Debug.Print Fix(a)
         Debug.Print Int(a)
         Debug.Print CInt(a)
         Debug.Print CLng(a)
         Debug.Print fRound(a, 0)
         Debug.Print fRound(a, 3)
    End Sub执行後在 VB 的即时运算视窗出现以下结果: 1234
     1234
     1235
     1235
    1235
    1234.568
      

  2.   

    VB自动转换了,用的是四舍五入的方式,不过VB中的四舍五入实质上是:“四舍六入,五取双”。这是最严格的方式的。
      

  3.   

    记得有次实验出现过不符合“四舍六入,五取双”的规律的,但是现在想不起来是在什么情况下了。请问这个规律是官方说明的吗?有没有更可靠点的信息?谢谢
    ---------------
    这是确定的。不用怀疑,呵呵。这样更准确些。具体在网上baidu一下吧。