JS在浮點數運算上會有精度的問題
主要是因為JS運算是依循IEEE754的規範,在運算時會轉換成2進制,而浮點數在轉成二進制時會造成無窮迴圈,進而產生運算誤差
JS有對此有.toFixed語法來處理浮點數問題
(0.21+0.32).toFixed(10) ==>0.5
.toFixed(x) ,x為精度範圍,需為0~20 ,超出精度範圍的部分會以四捨五入方式處理(同樣遵循IEEE754,所以在負數的四捨五入會成為四捨六入)
網路上也有許多套件可以處理複雜運算與浮點數運算的問題,如 :math.js 、 Numera.js
但是.toFixed在較早期的瀏覽器中不支援,故也可自行處理浮點數運數。一般是先將其轉成整數後進行運算,再補回小數點
*整數在超過1e後也會有運算精度上與溢位的問題