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.568Fix 和 Int 是属於无条件舍去,但是他们两者在处理负数的部分仍有些微差异,请自行叁阅VB Help;CInt 和 CLng 也有四舍五入的功能,但是只能取到整数部分;Format 则可以四舍五入到你所指定的小数位数。
有一点值得一提的是,Format 的第二个叁数使用 "0" 和 "#" 的差异:
format(123.4,".000") 输出 123.400
format(123.4,".###") 输出123.4
也就是说:第二个叁数使用 "0" 的,会自动补上多馀的 0,有时候为了编排好看会希望这麽做;使用 "#" 的则不会自动补上 0。