我有以下函数,它总计三个字段值:
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
然后使用 formatNum
将它们的值转换为 int
,如下所示:
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
我做错了什么?由于这些值现在应该是数字,但当我将它们加在一起时它们似乎表现得像字符串。
最佳答案
toFixed
返回一个字符串,将字符串相加即可。
当您用添加逗号替换句点时,您必须在数字相加后执行此操作,因此 formatNum
函数不是真的有用,就用这个代替
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 );
}
关于javascript - 在 JavaScript 中将小数相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940249/