前端保留兩位小數toFixed(2)會有坑

你风致發表於2024-11-06
(422.445).toFixed(2)
"422.44"
(422.165).toFixed(2)
"422.17"
(422.446).toFixed(2)
"422.45"
(422.455).toFixed(2)
"422.45"
(422.456).toFixed(2)
"422.46"
(422.465).toFixed(2)
"422.46"
(422.466).toFixed(2)
"422.47"

可以看到結果並不是完全符合自動四捨五入的規律;

網上看到有些說四捨六入的,其實也不對;如422.165最後一位小於6,但也入了一位變422.17;

有的說在3位小數的情況下,第2位小數小於5,第3位小數小於等於5是不進位的,似乎也不對;如422.465,第2位大於5了,不符合規則,它應該進一位,但實際得到是422.46還是沒進位;

所以還是會有坑的,建議計算邏輯由後端進行處理;實在涉及前端的計算邏輯需要注意這一點,哪怕有一些前端的處理精度的庫也不一定保險。

相關文章