class="area">
寫一個評分程序,捎帶整理了asp四捨五入實現統計百分比方法的小文章。
如何進行百分比的統計呢?也就是說:
總投票數17人,贊同7人 7/17=0.411764705882353
那麼贊同的百分比精確到小數點2位就是41.18%。
說起實現思路很簡單,可以用asp的四捨五入函數取出數值然後乘以100不就OK了
response.write Round(7/17*100,2) & "%"
response.write FormatNumber(7/17*100,2) & "%"
這裡的Round函數 和FormatNumber函數可返回按指定位數進行四捨五入的數值(具體的參數大家盡可google一下,我這裡不詳說了),采用哪個合適呢?這需要說以下他們的區別,大家可以看示例
Round(1.5)
Round(2.5)
Round(3.5)
Round(4.5)
FormatNumber(1.5,0)
FormatNumber(2.5,0)
FormatNumber(3.5,0)
FormatNumber(4.5,0)
Round的結果是:
2
2
4
4
FormatNumber的結果是:
2
3
4
5
嗯!好像不對?4.5和2.5的四捨五入結果有問題,難道是ASP的bug?
原來雖然Round函數叫做四捨五入函數准確說是是"四捨六入五逢雙函數",與我們平常說四捨五入的並不一樣,我們平時的是:大於等於5的數值入、小於5的數值捨。但是,Round函數卻是大於5的數值入、小於5的數值捨、等於5的的時候是根據前面數的奇偶來判斷的,為奇數時進位,為偶數時捨位。這是金融中的要求,因為四捨五入中1-4捨,5-9入,捨入概率比為4/5,並不平均,這在金融中是非常重要的,只有將5取最接近的偶數才能在概率上做到對等。
FormatNumber函數則是完全和我們平常理解的一樣進行四捨五入,兩個函數談不上哪個更精確,關鍵看你想用在哪裡
了。
實際上我采用的是FormatPercent函數,這是因為FormatPercent函數對返回的值自動格式化為尾隨有 % 符號的
百分比(乘以 100 )。
所以“response.write FormatNumber(7/17*100,2) & "%"”可以直接寫成下面格式
response.write FormatPercent(7/17,2)
顯然FormatPercent函數處理四捨五入實現統計百分比要比前兩個函數方便的多