簡體   English   中英

使用 BigNumber 處理舍入問題

[英]Handling rounding issue with BigNumber

我正在嘗試用更多小數減去兩個數字。 但它正在四舍五入。 如何使用 BigNumber 確保數字不四舍五入且計算准確。

 const myObj = { total: 5000000, filled: 4999999.9999999996870756 }; const total = new BigNumber(myObj.total); const filled = new BigNumber(myObj.filled); const remaining = total.minus(filled); console.log(total, filled, remaining); if(remaining === 0.0000000003129244) console.log("remaining calculation is correct") else console.log("incorrect calculation")
 <script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/8.0.2/bignumber.min.js" integrity="sha512-7UzDjRNKHpQnkh1Wf1l6i/OPINS9P2DDzTwQNX79JxfbInCXGpgI1RPb3ZD+uTP3O5X7Ke4e0+cxt2TxV7n0qQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

首先,您需要定義字符串變量以不四舍五入。 之后為了比較bigNumber 的值,最好使用“ compareTo ”參考文檔

 const myObj = { total: '5000000', filled: '4999999.9999999996870756' }; const total = new BigNumber(myObj.total); const filled = new BigNumber(myObj.filled); const remaining = total.minus(filled); console.log('total',total); console.log('filled',filled); console.log('remaining', remaining); if(remaining.comparedTo(0.0000000003129244) === 0) console.log("remaining calculation is correct") else console.log("incorrect calculation")
 <script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/8.0.2/bignumber.min.js" integrity="sha512-7UzDjRNKHpQnkh1Wf1l6i/OPINS9P2DDzTwQNX79JxfbInCXGpgI1RPb3ZD+uTP3O5X7Ke4e0+cxt2TxV7n0qQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM