有時候我們必需將數字加上每三個位數加上一個逗號,例如20000變成20,000,目的在於方便財務上閱讀。所以我整理了下列出幾種解決的方法
第一個方法用javascript寫一個數字格式化函式
// 於 2015-04-23 修正
function formatNumber(str, glue) {
// 如果傳入必需為數字型參數,不然就噴 isNaN 回去
if(isNaN(str)) {
return NaN;
}
// 決定三個位數的分隔符號
var glue= (typeof glue== 'string') ? glue: ',';
var digits = str.toString().split('.'); // 先分左邊跟小數點
var integerDigits = digits[0].split(""); // 獎整數的部分切割成陣列
var threeDigits = []; // 用來存放3個位數的陣列
// 當數字足夠,從後面取出三個位數,轉成字串塞回 threeDigits
while (integerDigits.length > 3) {
threeDigits.unshift(integerDigits.splice(integerDigits.length - 3, 3).join(""));
}
threeDigits.unshift(integerDigits.join(""));
digits[0] = threeDigits.join(glue);
return digits.join(".");
}
//測試函式(注意數字要以字串輸入)
var money = formatNumber('1234567890');
alert(money);
//輸出結果為:1,234,567,890
var money = formatNumber('1234567890.321','`');
//輸出結果為:1`234`567`890.321
當然在PHP,你有更快速的方法:
//測試函式參數說明 // 1) 欲轉換的數字 // 2) 小數位數 // 3) 小數點的顯示字元 // 4) 三位數的顯示字元 $number = 1234567890.321; echo number_format($number, 2, '.' ,',');//輸出結果為:1,234,567,890.32 echo number_format($number, 1, '*' ,'#');//輸出結果為:1#234#567#890*3
詳細的用法參考:number_format() ,甚至更進階的函式可參考:money_format()
另外一種方法是在執行SQL查詢時,就先將數字進行轉換動作
--假設表單salary(薪水)有一個名稱為money(錢)的欄位 SELECT FORMAT(money, 4) FROM salary; --輸出結果將會把money的數字資料態轉為xx,xxx,xxx格式,以下為範圍輸出 SELECT FORMAT(12332.123456, 4); --輸出結果為:12,332.1235 SELECT FORMAT(12332.2,0) --輸出結果為:12,332 SELECT FORMAT(12332.1,4) --輸出結果為:12,332.1000
詳細的用法請參考:MySQL中文參考手冊【7.4.12其他函數】
文章標籤
全站熱搜

你的 PHP 版本 , 應該沒有測試過吧! 跑出來的結果 ,並非那樣 = =
Sorry, 真的沒特別去測試它,正確的程式我已經修正了
大大你的第一種方法 遇到小數點就掛了 假如2458.6 會變成245,8.6分隔就錯誤了
這部分已經重寫函式修正好了唷