四舍五入的不公平
四舍五入是一種精確度的計(jì)數(shù)保留法,常常用在省略小數(shù)點(diǎn)位數(shù)時(shí),當(dāng)所需省略的小數(shù)位是[01234]則直接省略征字,[56789]時(shí)進(jìn)1再省略都弹。
如果我們先精確的得到三位小數(shù)的數(shù),需要保留兩位小數(shù)匙姜,并且這個(gè)錢(qián)是我們付給別人的畅厢,簡(jiǎn)單的使用四舍五入的話,0至9的可能性都是1/10, 求權(quán): (0.000+0.001+0.002+0.003+0.004-0.005-0.004-0.003-0.002-0.001)x0.1 = -0.0005 即我們實(shí)際每成交一筆就會(huì)虧損 0.0005氮昧。
實(shí)際情況可能我們無(wú)法得到精確的三位小數(shù)的框杜,并且我們也無(wú)需求權(quán),從數(shù)對(duì)稱可知袖肥,每當(dāng)有需保留m位的小數(shù) 0.mx被直接省略咪辱,就一定會(huì)有一個(gè)不同的數(shù) 1-0.mx 進(jìn)1到第上一位后再省略x,除非這個(gè)x是5開(kāi)頭并且在它之后只有0椎组,這時(shí)對(duì)稱后是它自己油狂,這也就是不公平所在。
銀行家舍入
為了解決四舍五入的不公平寸癌,有人提出銀行家傳入专筷,也就是四舍六入,五看情況蒸苇。
所謂看情況仁堪,就是處理不公平的特殊所在,即被舍入如果是5并且5之后只有0時(shí)填渠,此時(shí)看5上一位是偶直接舍去弦聂,為奇進(jìn)1再舍去。比如:
13.1249999999 變 13.12
13.1250000001 變 13.13
13.1250000000 變 13.12
13.1350000000 變 13.14
toFixed函數(shù)
NumberObject.toFixed(num)
在JS中氛什,對(duì)NumberObject進(jìn)行“四舍五入”莺葫,num為保留的小數(shù)個(gè)數(shù),默認(rèn)不填為0枪眉,最后返回一個(gè)數(shù)字的字符串捺檬。
我們知道了四舍五入不公平,但我們偏偏就想用不公平的四舍五入可以用這個(gè)函數(shù)獲取到偏偏想到的結(jié)果嗎贸铜?
不能堡纬!
比如:
0.105.toFixed(2) === ‘0.10’
0.115.toFixed(2) === ‘0.12’
0.125.toFixed(2) === ‘0.13’
0.135.toFixed(2) === ‘0.14’
0.145.toFixed(2) === ‘0.14’
0.155.toFixed(2) === ‘0.15’
推薦一個(gè)鏈接https://www.boatsky.com/blog/32