//解决加减乘除的精度问题 //加法计算 调用:Add(arg1,arg2) Add: function (arg1, arg2) { let 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) }, //减法计算 调用:Subtr(arg1,arg2) Subtr: function (arg1, arg2) { let r1, r2, m, n; 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)); n = (r1 >= r2) ? r1 : r2; return ((arg1 * m - arg2 * m) / m) }, //乘法函数 调用:Mul(arg1,arg2) Mul: function (arg1, arg2) { let m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) { } try { m += s2.split(".")[1].length } catch (e) { } return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); }, //除法运算 调用:Div(arg1,arg2) Div: function (arg1, arg2) { let t1 = 0, t2 = 0, r1, r2; try { t1 = arg1.toString().split('.')[1].length; } catch (e) { } try { t2 = arg2.toString().split('.')[1].length; } catch (e) { } r1 = Number(arg1.toString().replace('.', '')); r2 = Number(arg2.toString().replace('.', '')); return (r1 / r2) * Math.pow(10, t2 - t1); }
想问一下js大神,如何计算商品价格,能尽可能保证计算结果的准确性,商家能尽可能多赚少亏?因为小程序商品的单价都是几角几分的,例如¥0.15,¥0.2,¥0.26,¥0.13之类的, 并且每一个订单基本都是十几个到 二十几个商品,每个商品的数量都是十几个到二十几个, 例如:商品A¥0.15 ×15个,商品B¥0.2 ×20个,商品C¥0.25×18个,商品D¥0.13×17个等, 因为 JS数字精度不严谨,会出现丢失精度的情况, 想问一下有经验的前端朋友,在这种情况下, 如何计算商品价格,能尽可能保证计算结果的准确性,商家能尽可能多赚少亏? 最好是能贴个demo 🤣。。。。。。
2020-07-11