显示数字到第二个最接近的小数

时间:2014-01-09 18:10:17

标签: javascript jquery

我是Javascript的新手所以请耐心等待。

我有这个功能,累计总计。如何使它显示最接近的两位小数而不是小数位呢?

function calcProdSubTotal() {

    var prodSubTotal = 0;

    $(".row-total-input").each(function() {

         var valString = $(this).val() || 0;

        prodSubTotal += parseInt(valString);

    });

    $("#product-subtotal").val(CommaFormatted(prodSubTotal));

}

谢谢!

编辑:根据要求:逗号形式:

function CommaFormatted(amount) {

    var delimiter = ","; 
    var i = parseInt(amount);

    if(isNaN(i)) { return ''; }

    i = Math.abs(i);

    var minus = '';
    if (i < 0) { minus = '-'; }

    var n = new String(i);
    var a = [];

    while(n.length > 3)
    {
        var nn = n.substr(n.length-3);
    a.unshift(nn);
    n = n.substr(0,n.length-3);
}

if (n.length > 0) { a.unshift(n); }

n = a.join(delimiter);

amount = "$" + minus + n;

return amount;

}

4 个答案:

答案 0 :(得分:1)

parseInt解析整数,所以你在那里摆脱任何小数。使用parseFloat

E.g。

parseFloat('10.599').toFixed(2); //10.60

您可能还想将commaFormatted功能更改为:

function commaFormatted(amount) {
    if (!isFinite(amount) || typeof amount !== 'number') return '';

    return '$' + amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
}


commaFormatted(0); //$0.00
commaFormatted(1.59); //$1.59
commaFormatted(999999999.99); //$999,999,999.99

答案 1 :(得分:0)

您正在寻找toFixed()。它需要一个参数digits。该参数记录如下:

  

小数点后出现的位数;这可以是0到20之间的值,包括0和20,并且实现可以可选地支持更大范围的值。如果省略此参数,则将其视为0。

还要注意parseInt()解析整数,截断您可能拥有的任何小数。 parseFloat()将按预期保留小数。

答案 2 :(得分:0)

用于运作toFixed(2)

2是一个整数参数,表示使用2个小数点,假设您的逗号格式化代码不会将其转换为字符串。 (如果是,请在运行格式之前修复小数)

$("#product-subtotal").val(CommaFormatted(parseFloat(prodSubTotal).toFixed(2)));

请记住parseFloat,因为val()可能是一个字符串!“

答案 3 :(得分:0)

我解决了我的问题。我只是改变了:

 $("#product-subtotal").val(CommaFormatted(prodSubTotal));

  $("#product-subtotal").val(prodSubTotal);

正如我在评论中所说,这不是我写的剧本。这是Chris Coyier写的一个剧本,我只是想修改它。我想我不需要为我的目的使用CommaFormatted?

谢谢大家的帮助!