js 子表数据input输入后自动合计,精确小数精度位数

    技术2025-12-23  15

    1.发现一个很好用的函数

    toFixede(n) 小数留几位小数位,当小于n时,自动补充0

    一篇博客 https://hacpai.com/article/1515730174574

    都是关于JS处理此类问题的

    2.我自己的需求是 输入两个值,有可能是整数,有可能是不确定位数的小数,最终得到的值肯定是两值中最大精度的,如果都是整数,那么留一位小数,当然这个也可以不留,按各自需要。

    比如说0的补充和最大值取数,东自己手写的,测试的几种方法是可以直接用函数来实现的,自己觉得那种好用用哪一种

    3.前端输入框加上onchange函数,触发sum(),因为我这里是子表中的数据,所以是获取idx,明确是那一条子记录。

     

    function sum(idx) { var baseNum, baseNum1, baseNum2; //这些是测试 var n1 = (123).toFixed(1); var n2 = 124; var n3 =(n2).toFixed(1); var n4 =125.009; var n5 = (n4).toFixed(5); var maxxvalue = Math.max(n2,n4); //这些是测试 var p = document.getElementById("matOperationChildList" + idx + "_operationNum").value; var n = document.getElementById("matOperationChildList" + idx + "_surePrice").value; // 判断是否为整数,并获取两个数值小数点最大的是几位 if ((/(^[1-9]\d*$)/.test(p))){ p = p.toString() + ".0"; baseNum1 = 1; }else{ baseNum1 = p.toString().split(".")[1].length; } if ((/(^[1-9]\d*$)/.test(n))){ n = n.toString() + ".0"; baseNum2 = 1; }else{ baseNum2 = n.toString().split(".")[1].length; } //经过以上处理,两个数字都是小数了 if ((baseNum1 - baseNum2)>0||(baseNum1 - baseNum2)==0){ baseNum = baseNum1; }else { baseNum = baseNum2; } //结果值按两位数字中位数最大的来取值 document.getElementById("matOperationChildList" + idx + "_money").value=(p*n).toFixed(baseNum); }

     

    Processed: 0.018, SQL: 9