js浮點數相乘精度丟失的問題

2021-09-12 20:54:15 字數 723 閱讀 7952

在用vue做專案時,需要以百分比的形式保留兩位小數,展示在頁面上,但遇到了乙個問題:

var num=data5/(data4+data5+data6)).tofixed(2)*100+'%'
npm i decimal.js
3.在專案中引入

import decimal from 'decimal.js';
4.解決上述問題:

var num=new decimal(data4/(data4+data5+data6)).mul(new decimal(100))).tofixed(2)+'%'
讓原始的小數乘以100之後再利用tofixed(2)保留兩位小數

5.拓展decimal.js的用法,此處參考 有田春雪 的文章

const a = 9.99

const b = 8.03

加法:let c = new decimal(a).add(new decimal(b))

減法:let d = new decimal(a).sub(new decimal(b))

乘法:let e = new decimal(a).mul(new decimal(b))

除法:let f = new decimal(a).div(new(decimal(b))

浮點數精度丟失問題

c 中的浮點數,分單精度 float 和雙精度 double float 是 system.single 的別名,介於 3.402823e38 和 3.402823e38 之間的32位數字,符合二進位制浮點演算法的 iec 60559 1989 ieee 754 標準 double 是 system...

JS之浮點數精度丟失問題

js中,在進行浮點數計算的時候,會出現精度丟失的問題,如下 alert 0.1 0.2 alert 0.3 0.2 alert 0.1 0.2 alert 0.3 0.2 正常情況,得出的結果應該是0.3,0.1,0.02,1.5,但是實際得出的結果卻不是這樣,如下 可以看到,得出的結果並不是我們預...

浮點數的運算精度丟失

開啟python編譯器,輸入0.1 0.2,期待的結果是0.3,但是輸出為 0.30000000000000004 有點小尷尬,這是為什麼呢?其實這設計到了計算機的浮點數儲存是以二進位制進行儲存的。說二進位制不太形象,換成我們最長使用的十進位制和分數 1 5,使用小數表示為0.2,但是1 3,使用小...