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);
}