toFixed不是采用传统意义上的四舍五入法,而是银行家算法。所以在进行精度算法时,最好在后端计算,而且toFixed方法在不同的浏览器呈现的效果不同:
var a = 1.335;
console.log(a.toFixed(2));
//IE 1.34
//Chorme 1.33
var b = 1.345
//Chorme 1.34
var c = 1.355
//Chorme 1.35
var d = 1.365
//Chorme 1.36
var d = 1.375
//Chorme 1.37
var e = 1.385
//Chorme 1.38
银行家算法即:“四舍六入五成双”,当舍掉位是5时,要根据5前一位来判断是否舍入。当5前一位是奇数:舍5入1;当5前一位是偶数:舍5不进。(0为偶数)
(但同时发现:在chrome种,并不完全遵循所谓的银行家算法,所以在进行金额的换算时,应尽量避免使用toFixed()方法,同时它与后台java等语言的银行家舍入精度不同,可能造成接口验证失败)
round():
该方法是标准的四舍五入,使用方法:Math.round(Number);
如果想实现四舍五入的方法,建议重写toFixed()方法。