[VB]運用函式控制小數點位數

運用函式控制小數點位數

我們時常需要利用一些函式去控制小數點後的位數,並四捨五入,而其中最常用的應該是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()去做小數點的控制..當然需求不同還是看個人囉!

分享


站作網站設計工作室 SiteMak Studio
Shinyo Ho 
Founder / Developer
email:shinyo.her@gmail.com|web:www.sitemak.com.tw