Javascript函数来格式化货币

时间:2016-11-08 13:14:29

标签: javascript jquery

我使用以下函数在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)) : '');
}

提前致谢

1 个答案:

答案 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

无论如何,你肯定能找到其他人在评论中提到的数千种分离的清洁版本。