javascript - 在 JavaScript 中将小数相加

标签 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

然后使用 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/

相关文章:

javascript - ('change' 上的 jquery ...无法在多个标签中工作

javascript - 我如何从 updatepanel 中的后端调用 javascript 函数

javascript - 检索 attr(href) 以在选项卡中使用

jquery - 嵌套水平菜单可更新

jquery - 动态定位 CSS 对话泡泡的三 Angular 形 ( :before & :after classes) using jQuery

javascript - 该脚本为何返回未定义以及在何处返回未定义?

javascript - List.js 中的多重排序

javascript - 关于 this/@ 在 Javascript/Coffeescript 中的一个难题

javascript - 使用 MailApp.sendEmail 设置正文电子邮件文本格式的替代方法

javascript - 如果我不更改第一个下拉菜单,第二个下拉菜单的值不会改变