是否可以得到没有小数或特定数量小数的余额?

Is it possible to get the balance without the decimals or a specific amount of decimals?

我正在使用 web3 包,我得到了这样的余额

final abi = [
  'function balanceOf(address) view returns (uint)',
];

final token = web3.Contract(
  '{contract address}',
  abi,
  web3.provider!,
);

final balance = await token.call<BigInt>(
  'balanceOf',
  ['{walletAddress}'],
);

print('BALANCE: ${balance}');

但是当我打印余额时,我注意到它也有小数点。我怎样才能得到没有小数点的余额?或者有特定数量的小数?或者阅读令牌详细信息中设置的小数位数是多少?

我的余额是 999987,我得到 999987000000000000000000

您可以使用'toInt()'方法。比如,'balance.toInt()'

使用Decimal.fromBigInt创建Decimal,然后根据需要四舍五入。

正如 James 所建议的那样,有一个小数函数

const abi = [
  'function balanceOf(address) view returns (uint)',
  'function decimals() view returns (uint)',
];

final token = web3.Contract(
  contractAddress,
  abi,
  web3.provider!,
);

final balance = await token.call<BigInt>(
  'decimals',
  [],
);