Web3js

將數字 0.001 轉換為 BN.js 實例時,錯誤:值必須是整數、十六進製字元串、BN 或 BigNumber 實例

  • August 29, 2021

我想轉移 0.001 個代幣,但我不能使用web3.utils.toWei(0.001),因為智能合約有 12 位十進製而不是 18 位十進制。我該如何糾正它?

 var decimals = 12;
 var amount = web3.utils.toBN(web3.utils.toHex(0.001)); <--- Getting error here
 let value = amount.mul(web3.utils.toBN(10).pow(decimals));

錯誤是:

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

BN 不接受小數點數字。您可以執行以下操作:

var decimals = 12;
var value = (0.001*(10**decimals)).toString();
var amount = web3.utils.toBN(value);

希望這可以幫助

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