Web3js

如何使用 web3 將數字轉換為 BN

  • June 3, 2021

我正在嘗試從 Metamask 帳戶中獲取 eth 的餘額,但在瀏覽器控制台中出現以下錯誤:

Uncaught Error: [number-to-bn] while converting number "0.322778986" to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.

這是檢索 eth 值的程式碼:

 Balance: {this.props.ethBalance ? window.web3.utils.fromWei(this.props.ethBalance.toString(), 'ether') : ''}

如何將其轉換為 BN 以顯示該值?任何幫助,將不勝感激!

web3.eth.getBalance()返回 aPromise解析為stringwei 中給定地址的餘額。

如果你想獲得wei的餘額,下面的程式碼應該可以工作。

const ethBalance = await web3.eth.getBalance(this.state.account);

如果你想以乙太幣顯示余額,你應該使用大數字庫將 wei 轉換為乙太幣。幸運的是,web3 有一個用於此目的的功能。

const balanceInWei = await web3.eth.getBalance(this.state.account);
const ethBalance = web3.utils.fromWei(balanceInWei, "ether");

由於web3.utils.fromWei(number [, unit])返回一個stringif 給定number參數 is Stringor Number,因此您無需轉換為大數字即可顯示它。

當以乙太幣顯示余額時,您無需web3.utils.fromWei(number [, unit])再次呼叫。以下程式碼應以醚顯示余額。

Balance: {{ this.props.ethBalance || "" }}

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