在JavaScript中一起添加小数

时间:2014-04-08 14:35:18

标签: javascript jquery

我有以下函数,它总计了三个字段值:

function calculatePublicTransportTotalClaim(){

    var Bus_Weekly_Claim = formatNum( $('#Bus_Weekly_Claim').val() );
    var Train_Weekly_Claim = formatNum( $('#Train_Weekly_Claim').val() );
    var Tram_Weekly_Claim = formatNum( $('#Tram_Weekly_Claim').val() );

    var Total = Bus_Weekly_Claim + Train_Weekly_Claim + Tram_Weekly_Claim;

    console.log( Total )

    $('#PublicTransport_Weekly_Claim').val( Total );

}

输入的默认值为0.00

他们使用ints将其值转换为formatNum,如下所示:

function formatNum(n) {

    var round = Math.round;

    n = round(n);

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

但是,当我调用函数calculatePublicTransportTotalClaim时,返回的Total为:0.000.000.00

我做错了什么?因为值现在应该是数字,但是当我将它们加在一起时,它们似乎就像字符串一样。

3 个答案:

答案 0 :(得分:4)

toFixed返回一个字符串,并在一起添加字符串。

当你用添加逗号替换句号时,你必须在数字加起来之后这样做,所以formatNum函数不是&# 39;真的很有用,只需这样做

function calculatePublicTransportTotalClaim(){

    var Bus_Weekly_Claim   = Math.round( $('#Bus_Weekly_Claim').val() );
    var Train_Weekly_Claim = Math.round( $('#Train_Weekly_Claim').val() );
    var Tram_Weekly_Claim  = Math.round( $('#Tram_Weekly_Claim').val() );

    var Total = Bus_Weekly_Claim + Train_Weekly_Claim + Tram_Weekly_Claim;

    var parsedTotal = Total.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,");

    $('#PublicTransport_Weekly_Claim').val( parsedTotal );

}

答案 1 :(得分:1)

toFixed()会返回字符串

您正在连接而不是添加。

强制它通过添加+来返回一个数字,
例如 return +(n.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1,"));

答案 2 :(得分:1)

将数字添加到一起后格式化数字。使用parseFloat()确保它们被解释为十进制数值。

total = parseFloat(val1) + parseFloat(val2) + parseFloat(val3)

然后格式化总数,parseFloat()是JavaScript等同于parseInt()但是对于十进制值

注意:使用parseFloat时,数字中不能有逗号。始终只在添加值后添加格式。