收银台金额涉及问题(保留两位小数,且不四舍五入,js浮点数计算精度不准确问题)

2,142 阅读1分钟

保留两位小数,且不四舍五入

##    保留两位小数,且不四舍五入
      formatDecimal(num) {
        num = num.toString()
        let index = num.indexOf('.')
        if (index !== -1) {
          num = num.substring(0, 2 + index + 1)
        } else {
          num = num.substring(0)
        }
        return parseFloat(num).toFixed(2)
      }

js浮点数计算精度不准确问题的解决办法

## 减法操作
subtr(arg1, arg2) {
        var 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));
        //last modify by deeka
        //动态控制精度长度
        n = (r1 >= r2) ? r1 : r2;
        return ((arg1 * m - arg2 * m) / m).toFixed(n);
      }