js計算浮點數,js計算小數誤差解決方案,js計算丟失精度,decimal.js的使用

衆所周知,計算機在計算浮點數的過程中會丟失精度。這在編程語言中都會出現,js也不例外。

0.1+0.2並不等於0.3

這就導致了在某些情況下,如果單純的採用四捨五入toFixed 會出現我們不想要的結果。尤其在計算金額方面,一分都不能出錯。

爲此java中的JDK中提供了BigDecimal類來解決丟失精度的問題。js中也有這樣一個庫,叫做decimal.js。

 

特點:

  • 整數型和浮點型
  • 簡單並且全面的 API
  • 複製了很多 JavaScript 中 Number.prototype(Number 類型屬性) 和Math
  • 能夠處理 十進制 二進制 八進制的值
  • 相比較java 中的 BigDecimal,decimal.js 更加快 、更小、易於使用
  • 無依賴
  • 兼容性好:僅僅使用了 JavaScript 1.5 (ECMAScript 3)的一些功能與特性
  • 全面的文檔和測試用例
  • 包含一個 TypeScript 的聲明文件: decimal.d.ts


你可以在github上找到它:https://github.com/MikeMcl/decimal.js

這樣使用 就可以解決掉丟失精度的問題了

 

 

    const a = 9.99;
    const b = 8.03;

    // 加法 c= a + b
    let c = new Decimal(a).add(new Decimal(b)) 

    // 減法 d = a - b
    let d = new Decimal(a).sub(new Decimal(b))

    // 乘法 e = a * b
    let e = new Decimal(a).mul(new Decimal(b))
    
    // 除法 f = a/b
    let f = new Decimal(a).div(new Decimal(b))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章