网上几乎所有文章都是错的
网上有2类文章:
- 一类是toFixed科普文章,像W3CSchool直接说toFixed是按照四舍五入,这属于完全错误的,甚至MDN都完全没有提到如何舍入;
- 还有一类是介绍toFixed的坑的文章,这类文章一般都有部分错误,网上绝大部分文章都指出,toFixed是按照银行家舍入法来执行的,实际测试并非如此。
所谓银行家舍入法:四舍六入五看情况,五后非零直接入,五后为零看奇偶,五前为偶应舍去,五前为奇要进一,具体一点就是:
- <=4舍去尾数,>=6进1;
- 尾数为5时,如果5后面还有非0数字,也是进1,比如
1.33500001.toFixed(2)
返回1.34
; - 如果5后面没有数字或者全是0,那么看5前面的数字是奇数还是偶数,奇数进1,偶数舍去;
划重点:经笔者实际测试发现,最后一条浏览器并没有遵守,实际规律暂时还没有摸清楚,看起来似乎完全无规律可言,甚至不同浏览器返回结果还不一样,比如1.335.toFixed(2)
Chrome返回1.33
,IE11返回1.34
,这篇文章介绍了一些测试兼容情况:https://www.cnblogs.com/wangsaiming/p/4644790.html