Wenn ich versucht habe, mehr als 1000 Token zu übertragen, wird ein Fehler wie unten erwähnt ausgegeben (ich verwende die Beta-Version von web3 js 1.0.0 34).
Fehler: [number-to-bn] beim Konvertieren der Nummer 1e+23 in die BN.js-Instanz, Fehler: ungültiger Zahlenwert. Der Wert muss eine Ganzzahl, ein Hex-String, eine BN- oder eine BigNumber-Instanz sein. Beachten Sie, dass Dezimalzahlen nicht unterstützt werden. Gegebener Wert: "1e+23
Finden Sie Codebeispiele, die ich ausprobiert habe.
//var tokens = amount * 1e18;
//var tokens = amount * (10 ** 18);
//var tokens = parseInt(amount) * 1e18;
//var tokens = web3.utils.toBN(amount);
//var tokens = amount * Math.pow(10, decimal)
var tokens = web3.utils.toBN(amount * 1e18) ;
Hat jemand mit diesem Problem konfrontiert?
Wenn Sie Web3.js verwenden und Ihr Token die Standarddezimalzahl 10 18 verwendet , können Sie auch web3.utils.toWei()
und verwenden web3.utils.fromWei()
, um ganz einfach zu und von den gewünschten großen Zahlen zu gelangen.
In dieser Situation können Sie Folgendes versuchen:
var amount = 1000
var tokens = web3.utils.toWei(amount.toString(), 'ether')
"1000000000000000000000"
Das kannst du dann ganz einfach in eine BN umwandeln:
var bntokens = web3.utils.toBN(tokens)
<pre>
import { BigNumber} from 'ethers';
....
const decimals = 18;
const trans_amount = 1500;
const amount= BigNumber.from(trans_amount).mul(BigNumber.from(10).pow(decimals));
consoel.og("amount is ", amount);
</pre>
Benutzer324534
Benutzer324534
Shawn Tabrizi
Shawn Tabrizi