1. 程式人生 > >JavaScript 運算出現多位小數的解決辦法

JavaScript 運算出現多位小數的解決辦法

JavaScript小數運算出現多位的解決辦法


在開發JS過程中,會經常遇到兩個小數相運算的情況,但是運算結果卻與預期不同,除錯一下發現計算結果竟然有那麼長一串尾巴。

先看幾個例子,在Chrome控制檯測試結果如下:
這裡寫圖片描述

產生原因:

JavaScript對小數運算會先轉成二進位制,運算完畢再轉回十進位制,過程中會有丟失,不過不是所有的小數間運算會有這個問題。

解決辦法:

一、先把需要運算的小數擴大成整數,運算後在縮小相同倍數。

例如:0.1+0.2  寫成 (0.1*10+0.2*10)/10    結果:0.3 
注意:type 為 number

二、使用toFixed()

例如:var a = 0.1+0.2  寫成 a.toFixed(1)     結果:"0.3"
                           a.toFixed(2)    結果:"0.30"
注意:type 為 string 

兩種解決方案得到的結果型別不同,第二種會強制保留n位,根據實際需要選擇。