JS对货币格式化函数
方法一:保留2位小数
/**
* 将数值四舍五入(保留2位小数)后格式化成金额形式
*
* @param num 数值(Number或者String)
* @return 金额格式的字符串,如'1,234,567.45'
* @type String
*/
function formatCurrency(num) {
num = num.toString().replace(/[^\d\.-]/g,''); //转成字符串并去掉其中除数字, . 和 - 之外的其它字符。
if(isNaN(num)) num = "0"; //是否非数字值
var sign = (num == (num = Math.abs(num)));
num = Math.floor(num * 100 + 0.50000000001); //下舍入
var cents = num % 100; //求余 余数 = 被除数 - 除数 * 商
cents = (cents < 10) ? "0" + cents : cents; //小于2位数就补齐
num = Math.floor(num / 100).toString();
for(var i = 0; i < Math.floor( (num.length - (1+i)) / 3 ); i++ ){ //每隔三位小数分始开隔
//4 ==> 三位小数加一个分隔符,
num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
}
return (((sign) ? '' : '-' ) + num + '.' + cents);
}
//调用方法
formatCurrency(1234567.75);
/**
* 参数说明
* @param s:要格式化的数字
* @param n:保留几位小数
* */
function formatCurrency(s, n) {
n = n > 0 && n <= 20 ? n : 2; //n大于0小于等于20时,值为n,否则默认为2
//将要格式化的数字转换成字符串,并去掉其中匹配的其他字符后返回一个浮点数。
//把 Number 四舍五入为指定位数的数字后,最终在转换成字符串。
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var numArry = s.split("."), //分隔字符串 0 -> 小数点前面数值 1 -> 小数点后面的尾数
l = numArry[0].split("").reverse(), //将前面数值再分隔,并反转顺序
t = "";
for (var i = 0; i < l.length; i++) { //每隔三位小数分始开隔
t += l[i] + ( (i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "" );
}
//将顺序反转回来,并返回一个字符串
return t.split("").reverse().join("") + "." + numArry[1];
}