工做中遇到金額須要保留兩位小數的需求,單價1.265,數量爲1,正常來說金額應爲1.27,用了toFixd()方法後結果爲1.26。post
最終找到問題所在:1.265 - 1.26 = 0.004999999999999893;ui
爲何會這樣?this
因爲1.265不是精確表示的,而1.26是能夠精確表示的,因此1.265就能夠獲得0.05存儲的值。能夠看到確實是比0.05小。spa
按照源碼的判斷,若是剩下的尾數第1位不是1就不進位,因爲剩下的尾數第1位是0,因此不進位,所以就致使了(1.265).toFixed(2)輸入結果是1.26prototype
根本緣由在於1.265的存儲要比實際存儲小一點,致使0.05的第1位尾數不是1,因此就被舍掉了。源碼
解決方案:io