js实现千分符转化
function fmoney(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];
var 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('') + '.' + r;
}
使用var amount = fmoney(123456.78,2);
console.log(amount);
结果:123,456.78
但是结果会四舍五入
比如
var amount = fmoney(123456.789,2);
console.log(amount);
结果:123,456.79
如果只截取两位小数,不进行四舍五入
var amount = fmoney(123456.568789,5);//保留5位小数
amount = amount.substring(0,amount.lastIndexOf('.')+3);//截取两位小数
console.log(amount);
结果:123,456.56
修改fmoney函数,不让结果四舍五入
function fmoney(s, n)
{
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + '').replace(/[^\d\.-]/g, '')) + '';
var l = s.split('.') [0].split('').reverse(),
r = s.split('.') [1];
var t = '';
for (var i = 0; i < l.length; i++)
{
t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? ',' : '');
}
if (!r) {
r = '0';
}
if (r.length < n) {
for (var i = r.length; i < n; i++) {
r += '0';
}
}else{
r=r.substr(0,n);
}
return t.split('').reverse().join('') + '.' + r;
}
结果
fmoney(1.555,2)
"1.55"
fmoney(1.5,2)
"1.50"
fmoney(1.9999,2)
"1.99"
fmoney(1,2)
"1.00"