Solidity
solidity - 檢查從solidity返回的bignumber
我正在使用松露,但這在這裡不應該有任何區別……
在使用合約的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()
。