簡體   English   中英

為什么帶有etherjs的BigNumber返回0

[英]Why is BigNumber with etherjs returning 0

我正在使用來自BigNumber的 BigNumber,我正在執行這個非常簡單的操作:

const cost = BigNumber.from(3)
    .div(BigNumber.from(1000))
    .mul(BigNumber.from(3));

  console.log(cost.toString());

它輸出“0”,但應該是 0.09。

為什么? 我究竟做錯了什么?

據我從文檔中可以看出,Ethers 的BigNumber只處理大整數 文檔中沒有提到小數值或精度或比例,所有這些都是您希望在處理小數值的庫中看到的。 另外,文檔提到它目前在BN.js的實現中使用BigNumber BN.js不處理小數值。 從其文檔中:

注意:此庫不支持小數。

這不是很清楚(大多數示例都是十進制的),它們可能意味着不支持數值。

幾個選項供您選擇:

  1. 您可以使用您所需精度的倍數的單位。 例如,如果您需要小數點右側的兩位精度,您將使用乘以 100 的值。然后除以 100 以獲得 output 的整個部分,並對 100 進行余數運算獲取 output 的小數部分(如果需要,使用前導0進行格式化)。

  2. 有幾個用於處理小數值的大數字庫,例如bignumberbig.js

暫無
暫無

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

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