一文教會你解決js數字精度丟失問題

一、關於為什麼要解決精度丟失

可以看下例子,因為js失去精度問題也是常見的問題,正常我們可以四舍五入或者 toFixed保留小數這種去解決

現在遇到問題是我們明知道計算結果是等於0.01的但是最後的結果確實true,如果我們遇到運算問題,小數數值比對問題,那麼我們就必須要去解決他,否則也就會出現上者情況,出現邏輯判斷出錯問題

二、怎麼解決js的計算精度丟失問題?

正常來說如果是 小數點保留後2位、3位等等,我們可以使用常見的 * 百位數、千位數 實現整位結果後 將結果在除以對應的數位實現結果,如下

console.log(5.22 - 5.21);

console.log((5.22 * 100 - 5.21 * 100) / 100);

根據上方的描述我們再去著眼看我們最開始的例子

結果也就成瞭我們想要的結果

三、toPrecision 特定方法返回四舍五入長度字符串

當然toFixed也是可以實現對應的長度取舍效果的,因為各大瀏覽器針對toFixed的各類結果都是不同的有興趣的同學可以參考下下面這篇文章

toFixed詳解

在這裡我們隻介紹 toPrecision 參照方法詳解

那麼我們也就知道瞭此方法是用來幹什麼的

當然再有一點也就是從左到右 不為0的位置開始計算

上方舉例 我們的結果是0.01

如果我們去使用toPrecision的話,那麼要填寫的參數則為1

返還的結果也就是我們想要的 0.01

然後我們搭配 parseFloat 對字符串進行一個浮點數值轉換後,然後對比得出最後結果

console.log(5.22 - 5.21 < 0.01);
console.log((5.22 * 100 - 5.21 * 100) / 100 < 0.01);
var num = 5.22 - 5.21;
console.log(parseFloat(num.toPrecision(1)) < 0.01);

結語

到此這篇關於解決js數字精度丟失問題的文章就介紹到這瞭,更多相關js數字精度丟失內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: