VB开发——VB中如何四舍五入?

在 Visual Basic 要做到四舍五入的功能应该用 Format 这个函数,用 CInt 或 CLng 都只能取到整数部分,而用 Format 函数可以取到你所指定的小数位数。

副程式

Public Function Round(num As Variant, n As Long) As String
     Round = Format(num, IIf(n > 0, "0." & String(n, "0"), "0"))
End Function

叁数说明

  • num:欲四舍五入的数值。因为欲四舍五入的数值可能是 Double 或 Single 或是其它资料型态,所以这里把 num 宣告成 Variant;如果把 num 宣告成 Double,而欲四舍五入的数值是 Single 型态,就会出现资料型态不符合的错误;但是把 num 宣告成 Variant 则可避免这种错误,或是使用传值呼叫 (ByVal) 也可避免这种错误。其实我不确定这个观念是否正确,如果有误请来信指正,谢谢。
  • n:取到小数点以下第 n 位。

Round 函数传回的是一个字串资料。

范例

Private 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 Round(a, 0)
     Debug.Print Round(a, 3)
End Sub

执行後在 VB 的即时运算视窗出现以下结果:

 1234
 1234
 1235
 1235
1235
1234.568

Fix 和 Int 是属於无条件舍去,但是他们两者在处理负数的部分仍有些微差异,请自行叁阅VB Help;CInt 和 CLng 也有四舍五入的功能,但是只能取到整数部分;Format 则可以四舍五入到你所指定的小数位数。

有一点值得一提的是,Format 的第二个叁数使用 "0" 和 "#" 的差异:

format(123.4,".000") 输出 123.400

format(123.4,".###") 输出123.4

也就是说:第二个叁数使用 "0" 的,会自动补上多馀的 0,有时候为了编排好看会希望这麽做;使用 "#" 的则不会自动补上 0。