Solidity

solidity - 檢查從solidity返回的bignumber

  • December 8, 2020

我正在使用松露,但這在這裡不應該有任何區別……

在使用合約的transfer mehtod的時候,我想傳遞一個參數——1000000000000000000000000,但是因為這個參數太大了,所以會報錯。這就是為什麼我通過web3.utils.toBN('1000000000000000000000000')

在那之後,我應該檢查一個可靠的地址是否持有這個數量的代幣。

所以我有這個:

let balance = await instance.balanceOf(address);

這將返回一個 bigNumber。

方式1:為了獲得一個實際數字以便我可以測試它是否有效,我嘗試了這個:balance.toNumber()which didn’t work。

方式2:然後,我嘗試 assert.equal(balance, web3.utils.toBN('1000000000000000000000000'));了,但現在,它顯示了一個錯誤—— AssertionError: expected <BN: d3c21bcecceda1000000> to equal <BN: d3c21bcecceda1000000>即使它們看起來仍然相等。

我的問題是您選擇哪種方式處理此類案件?方式一還是方式二?如果是這樣,我該如何解決我的問題呢?謝謝..

每當您需要顯示余額時,請執行此操作balance.toString()。如果您需要做一些數學運算,您可以在 variablebalance仍然是 BigNumber 時執行它們,然後您可以使用 再次顯示結果.toString()

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