利用VB.NET Format函數(shù)實(shí)現(xiàn)四舍五入功能
VB.NET經(jīng)過長時(shí)間的發(fā)展,很多用戶都很了解VB.NET了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。在VB.NET要做到四舍五入的功能應(yīng)該用VB.NET Format這個(gè)函數(shù),用CInt或CLng都只能取到整數(shù)部分,而用VB.NET Format函數(shù)可以取到你所指定的小數(shù)位數(shù)。
副程式:
- PublicFunctionRound(numAsVariant,nAsLong)AsString
- Round=Format(num,IIf(n>0,"0."&String(n,"0"),"0"))
- EndFunction
#T#叁數(shù)說明:num:欲四舍五入的數(shù)值。因?yàn)橛纳嵛迦氲臄?shù)值可能是Double或Single或是其它資料型態(tài),所以這里把num宣告成Variant;如果把num宣告成Double,而欲四舍五入的數(shù)值是Single型態(tài),就會(huì)出現(xiàn)資料型態(tài)不符合的錯(cuò)誤;但是把num宣告成Variant則可避免這種錯(cuò)誤,或是使用傳值呼叫(ByVal)也可避免這種錯(cuò)誤。其實(shí)我不確定這個(gè)觀念是否正確,如果有誤請(qǐng)來信指正,謝謝。n:取到小數(shù)點(diǎn)以下第n位。Round函數(shù)傳回的是一個(gè)字串資料。
范例:
- PrivateSubCommand1_Click()
- DimaAsDouble
- a=1234.56789
- Debug.PrintFix(a)
- Debug.PrintInt(a)
- Debug.PrintCInt(a)
- Debug.PrintCLng(a)
- Debug.PrintRound(a,0)
- Debug.PrintRound(a,3)
- EndSub
執(zhí)行後在VB的即時(shí)運(yùn)算視窗出現(xiàn)以下結(jié)果:
- 1234
- 1234
- 1235
- 1235
- 1235
- 1234.568
Fix和Int是屬於無條件舍去,但是他們兩者在處理負(fù)數(shù)的部分仍有些微差異,請(qǐng)自行叁閱VBHelp;CInt和CLng也有四舍五入的功能,但是只能取到整數(shù)部分;Format則可以四舍五入到你所指定的小數(shù)位數(shù)。有一點(diǎn)值得一提的是,VB.NET Format的第二個(gè)叁數(shù)使用"0"和"#"的差異:
- format(123.4,".000")輸出123.400
- format(123.4,".###")輸出123.4
也就是說:第二個(gè)叁數(shù)使用"0"的,會(huì)自動(dòng)補(bǔ)上多馀的0,有時(shí)候?yàn)榱司幣藕每磿?huì)希望這麼做;使用"#"的則不會(huì)自動(dòng)補(bǔ)上0。