js数字相加bug解决办法

PS:事件,做承运商结算中的待开票页面,每一条数据有单价和重量和小计价。需要呈现的效果,勾选数据,得到总条数和总重量和总价。

解决办法,先用相加函数进行计算,最后再用toFix()函数进行四舍五入。直接贴代码。

	    function accAdd(arg1, arg2) {
                var r1, r2, m;
                try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
                try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
                m = Math.pow(10, Math.max(r1, r2))
                return (arg1 * m + arg2 * m) / m
            }
            //计算选中的单数,和合计
            var poclear = function () {
                var total = 0;
                var num = 0;
                var checkedList = $("#poclear-table .poclear-checkbox:checked");
                if(checkedList.length==$("#poclear-table .poclear-checkbox").length){
                    $(".poclear-checkall").prop("checked", true);
                } else {
                    $(".poclear-checkall").prop("checked", false);
                }
                checkedList.each(function () {
                    var b = Number($(this).closest("tr").find("td.order-num").text());
                    num = accAdd(num, b);

                    var a = Number($(this).closest("tr").find("td.order-sumprice").text());
                    total = accAdd(total, a);
                    //total = accAdd(total, $(this).closest("tr").find("td.order-sumprice").text());
                    //num = accAdd(num, $(this).closest("tr").find("td.order-num").text());
                    
                })
                orderNum.text(checkedList.length);//数量
                $("#orderHight").text(num.toFixed(3));//重量
                orderPrice.text(total.toFixed(2));//总价              

                return false;
            }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在JavaScript中,当两个字符串进行相加操作时,会进行字符串拼接而不是相加运算。如果想要实现数字相加的效果,需要先将字符串转换为数字类型。有几种方法可以实现这个目的。 第一种方法是在字符串前面加上一个"+"号,这样就会将字符串转换为数字类型。例如: ```javascript let str1 = '1234'; let str2 = '3456'; let res = (+str1) + (+str2); ``` 这样,res的值就是数字相加的结果。 第二种方法是使用减法运算符"-",将字符串减去0,也可以将字符串转换为数字类型。例如: ```javascript let str1 = '1234'; let str2 = '3456'; let res = (str1 - 0) + (str2 - 0); ``` 这样,res的值也是数字相加的结果。 需要注意的是,如果字符串中包含非数字字符,转换为数字类型时会返回NaN(Not a Number)。所以在进行转换之前,需要确保字符串中只包含数字字符。 引用\[1\]和\[2\]提供了两种常用的方法来实现数字字符串相加的操作。你可以根据具体的需求选择其中一种方法来使用。 #### 引用[.reference_title] - *1* [js数字字符串相加](https://blog.csdn.net/weixin_42729208/article/details/82846991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JavaScript中字符串与数字间的运算](https://blog.csdn.net/weixin_44253336/article/details/98904994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Java】js的字符串数字相加问题](https://blog.csdn.net/u014234260/article/details/126298163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值