我使用以下函数在javascript中生成格式化的逗号分隔货币值,但它不适用于某些情况:
1234 => 1,234 (correct)
1.03 => 1.3 (wrong)
我如何解决以下功能中的问题:
function formatThousands(n, dp) {
var s = '' + (Math.floor(n)), d = n % 1, i = s.length, r = '';
while ((i -= 3) > 0) {
r = ',' + s.substr(i, 3) + r;
}
return s.substr(0, i + 3) + r + (d ? '.' + Math.round(d * Math.pow(10, dp || 2)) : '');
}
提前致谢
答案 0 :(得分:1)
要修复您的代码,我们需要确保其余部分的数字至少与" dp"参数,如果不是,我们将添加前导零。
function formatThousands(n, dp) {
var s = '' + (Math.floor(n)), d = n % 1, i = s.length, r = '';
while ((i -= 3) > 0) {
r = ',' + s.substr(i, 3) + r;
}
var rest = Math.round(d * Math.pow(10, dp || 2));
var rest_len = rest.toString().length;
if(rest_len < dp) {
rest = '0'.repeat(dp - rest_len) + rest;
}
return s.substr(0, i + 3) + r + (rest ? '.' + rest : '');
}
console.log(formatThousands(1234.14, 2)); //1,234.14
console.log(formatThousands(1.003526, 4)); //1.0035
无论如何,你肯定能找到其他人在评论中提到的数千种分离的清洁版本。