添加千位分隔符到自动总和

时间:2011-06-28 06:14:52

标签: javascript jquery number-formatting

我希望从下面的脚本计算出的总和显示两位小数,并且用逗号分隔数千位。在此阶段,它只显示两位小数。我是编程新手,并尝试过各种技术,但无法解决问题。到目前为止我的JS代码下面:

function calculateSum() {

    var sum = 0;
    //iterate through each textboxes and add the values
    $(".txt").each(function() {

        //add only if the value is number
        if(!isNaN(this.value) && this.value.length!=0) {
            sum += parseFloat(this.value);
        }

    });
    //.toFixed() method will roundoff the final sum to 2 decimal places
    $("#sum").html(sum.toFixed(2).replace(',', ''));

}

4 个答案:

答案 0 :(得分:4)

sum.toFixed(2).replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:$|\.))/g, '$1,')

说明:

在字符串的开头找到1到3的数字,然后是至少一个三位数字,后跟一个小数点或数字的结尾(所以相同的正则表达式适用于整数以及带小数点后2位的数字。)

答案 1 :(得分:2)

您需要使用以下内容:

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function calculateSum() {

    var sum = 0;
    //iterate through each textboxes and add the values
    $(".txt").each(function() {

        //add only if the value is number
        if(!isNaN(this.value) && this.value.length!=0) {
            sum += parseFloat(this.value);
        }

    });
    //.toFixed() method will roundoff the final sum to 2 decimal places
    $("#sum").html(addCommas(sum.toFixed(2)));

}

答案 2 :(得分:2)

function DigitsFormat(str) {
        return str.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1,');
}

答案 3 :(得分:0)

这是将千位分隔符添加到整数部分的非正则表达式方式:

function doThousands(n) {
  n = '' + n;
  if (n.length < 4) return n;
  var c = n.length % 3;
  var pre = n.substring(0, c);
  return pre + (pre.length? ',' : '') + n.substring(c).match(/\d{3}/g).join(',');
}