萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> java >> asp四捨五入實現統計百分比函數的差異

asp四捨五入實現統計百分比函數的差異

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的結果是: 





FormatNumber的結果是: 




嗯!好像不對?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函數處理四捨五入實現統計百分比要比前兩個函數方便的多  


copyright © 萬盛學電腦網 all rights reserved