運用函式控制小數點位數
我們時常需要利用一些函式去控制小數點後的位數,並四捨五入,而其中最常用的應該是Math Class下的 Round()函式
此函式主要用於截去數值後的小數點位數~
用法 :
Dim d As Decimal = 0.123
Dim Y As Double = Math.Round(d, 2) '結果 0.12
其中2為要取的位數,而變數d則為被取的數值 !
要點補充 :
1.如果第二個參數省略的話,就會到最接近的整數
2.這點很重要,Round()是奇數進位而偶數不進位!也就是說,如果數值為0.115,這樣就會四捨五入得到0.12,但如果數值是像0.125,是偶數則不進位得到結果0.12
所以使用Round時要特別注意這點,如果所需的值一定要100%進位的話,就不要使用這個函式,但我想這樣的進位方式在統計結果上是有幫助的!
關於為何會有這樣的問題請參考:
http://support.microsoft.com/kb/196652/EN-US/
那肯定進位要用甚麼函式呢??當然用Format最好囉!
用法:
Dim d As Decimal = 0.103
Dim Y As Double = Format(d, ".00") '結果 0.10
要點補充:
1.有沒有發現如果用Round()取出來的結果0.10會把0消掉,如果想看補0結果用Round()也不行了!而用Format取上面範例的結果會自動補0得到0.10這種我們想要的結果!
反之如果不想補0請改用以下寫法
Dim Y As Double = Format(d, ".##") '結果 0.1
目前在取捨上為了精準筆者還是採用了Format()去做小數點的控制..當然需求不同還是看個人囉!
|