今天同事在做一個功能的時候需要使用js來實現類似php函數number_format的功能,最后就有了下面的方法,可以實現了:
/** * number_format * @param number 傳進來的數, * @param bit 保留的小數位,默認保留兩位小數, * @param sign 為整數位間隔符號,默認為空格 * @param gapnum 為整數位每幾位間隔,默認為3位一隔 * @type arguments的作用:arguments[0] == number(之一) */ function number_format(number,bit,sign,gapnum){ //設置接收參數的默認值 var bit = arguments[1] ? arguments[1] : 2 ; var sign = arguments[2] ? arguments[2] : ' ' ; var gapnum = arguments[3] ? arguments[3] : 3 ; var str = '' ; number = number.toFixed(bit);//格式化 realnum = number.split('.')[0];//整數位(使用小數點分割整數和小數部分) decimal = number.split('.')[1];//小數位 realnumarr = realnum.split('');//將整數位逐位放進數組 ["1", "2", "3", "4", "5", "6"] //把整數部分從右往左拼接,每bit位添加一個sign符號 for(var i=1;i<=realnumarr.length;i++){ str = realnumarr[realnumarr.length-i] + str ; if(i%gapnum == 0){ str = sign+str;//每隔gapnum位前面加指定符號 } } //當遇到 gapnum 的倍數的時候,會出現比如 ",123",這種情況,所以要去掉最前面的 sign str = (realnum.length%gapnum==0) ? str.substr(1) : str; //重新拼接實數部分和小數位 realnum = str+'.'+decimal; return realnum; }
測試了一下:
$("#caonidaye").click(function(){
console.log(number_format(1234561.78,2,','));
})
結果: