Solidity

BN如何除以小數

  • December 20, 2020

我試圖用一個常數來劃分 BN,但我找不到正確的函式。基本上我想將 132876 除以 1.30,132876/1.30用於 BN 操作。這是我嘗試過的一個片段。

const gasAmount = new BN(132876) 
console.log(gasAmount.div(new BN('1.30')).toString()) // 160
console.log(gasAmount.div(new BN(1.30)).toString())   // 132876

// expected: 102212 

Web3.js 庫已經支持 BigNumber,因此您不必添加該庫兩次。試試這個:

const gasAmount = web3.utils.toBN(132876);
console.log(gasAmount.divn(1.30).toString());

BN不支持小數,如官方文件中所述

注意:此庫不支持小數。

所以改變這個:

gasAmount.div(new BN(1.30))

對此:

gasAmount.mul(new BN(130)).div(new BN(100))

甚至對此:

gasAmount.muln(130).divn(100)

引用自:https://ethereum.stackexchange.com/questions/91318