Convert BN to number

Viewed 6506

In truffle console I am executing the following statement,

result = token.balanceOf(accounts[1])

This statement returns the following output.

<BN: 8ac7230489e80000>

As suggested here, I am trying to use toNumber() and toString. But I am getting the following error.

result = token.balanceOf(accounts[1])
result.toString()
output: '[object Promise]'
result.toNumber()
TypeError: result.toNumber is not a function

Help me to fix this thiis.

2 Answers

Based on the output it seems you get a Promise. At the moment of running the "result.toString()" command - it's still a promise that haven't been fulfilled yet.

As @Saddy mentioned in the comment, You need to wait for the promise to be fulfilled before you could use the toString() method on its value.

You should add "await" prior to the method.

See the example in truffle documentation (https://www.trufflesuite.com/docs/truffle/quickstart):

Check the metacoin balance of the account that deployed the contract:

truffle(development)> let balance = await instance.getBalance(accounts[0])
truffle(development)> balance.toNumber()

like @Saddy mentioned you can do await for the promise to resolve as shown by @Ofir or do then as shown below.

truffle(development)> await instance.getBalance(accounts[0]).then(b => { return b.toNumber() })
Related