今天编写程序时,遇到将数字转化为带千分位标示符的格式的需求(如输入100000,则转化为100,000.00的格式,输入-100则转化为-100.00的格式),类似于会计专用的那种,在网上找到了一个方法,但是发现了一点bug,做了一点点修改,希望对各位有帮助,也方便以后用到时有个查找的地方。JavaScript代码如下(其中s代表传入的数字,n代表你希望保留的小数点位数)。
function formatMoney(s,n){
n = n >= 0 && n <= 20 ? n : 2;
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
var l = s.split(".")[0].split("").reverse(),
r = s.split(".")[1];
t = "";
for(i = 0; i < l.length; i ++ )
{
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
}
var pattern = new RegExp(',-','g');
if(pattern.test(t)){//如果有‘-’和‘,’相连接,则把'-,'换成'-'
return t.replace(',-','-').split("").reverse().join("") + "." + r;
}else{
return t.split("").reverse().join("") + "." + r;
}
}