toFixed(2)解决精度误差的方法

1.重定义toFixed(2)方法

function toFixed (d, n) {
        var s = n + "";
        if (!d) d = 0;
        if (s.indexOf(".") == -1) s += ".";
        s += new Array(d + 1).join("0");
        if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$").test(s)) {
            var s = "0" + RegExp.$2, pm = RegExp.$1, a = RegExp.$3.length, b = true;
            if (a == d + 2) {
                a = s.match(/\d/g);
                if (parseInt(a[a.length - 1]) > 4) {
                    for (var i = a.length - 2; i >= 0; i--) {
                        a[i] = parseInt(a[i]) + 1;
                        if (a[i] == 10) {
                            a[i] = 0;
                            b = i != 1;
                        } else break;
                    }
                }
                s = a.join("").replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), "$1.$2");
     
            }
            if (b) s = s.substr(1);
            return (pm + s).replace(/\.$/, "");
        }
        return this + "";
    };
 

2.计算比例时,先乘以100,再调用函数

 var sbpercent = ((sbrc/sumrc)*100).toFixed(2);
 var jfpercent = ((jfrc/sumrc)*100).toFixed(2);
 var nbpercent = ((nbrc/sumrc)*100).toFixed(2);

你可能感兴趣的:(javascript)