1.Math.round方法
Math.round() 方法可把一个数字舍入为最接近的整数。例如:Math.round(x),则是将x取其最接近的整数。
简单例子:
var num=Math.round(568.58)
console.log(num);
// 输出结果是:569
说明:Math.round方法使用的是四舍五入中的方法,符合数学中取舍的规则。结果只能是整数,对于小数的处理没有那么便捷,但是可以根据不同的要求,进行自定义的处理。
2. tofixed方法
toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。例如将数据Num保留2位小数,则表示为:toFixed(2)
例子:
var number =6.446242342;
var num = number.toFixed(2);
console.log(num);输出结果是:6.44
// 期望输出结果是:6.45
说明:tofixed方法四舍五入的规则与数学中的规则不同,使用的是银行家舍入规则,银行家舍入:所谓银行家舍入法,其实质是一种四舍六入五取偶法
解决办法
1。
roundFixed(num, fixed) {//修改js四舍五入
var pos = num.toString().indexOf('.'),
decimal_places = num.toString().length - pos - 1,
_int = num * Math.pow(10, decimal_places),
divisor_1 = Math.pow(10, decimal_places - fixed),
divisor_2 = Math.pow(10, fixed);
return Math.round(_int / divisor_1) / divisor_2;
}
2.
Number.prototype.toFixed = function (d) {
var s = this + "";
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 + "";
};