So konvertieren Sie den ETH-Ethereum-Transaktionswert in Javascript in Dezimalzahlen

Beispielwert:0x2c1c986f1c48000

von: hier

Erwarteter Wert zurück: 0.19866144Eth

Antworten (3)

Ether-Festkommazahlen haben eine höhere Genauigkeit als JavaScript-Floats, daher müssen Sie eine Bibliothek verwenden, die diese größeren Werte unterstützt.

In Web3 können Sie einfach Folgendes tun:

let bigNumber = web3.toBigNumber('0xFFFFFF')
web3.fromWei(bigNumber)
Ich komme mit: parseInt(0x2c1c986f1c48000, 16) / Math.pow(10, 18) Link

Versuchen Sie dies mit ethers.js utils :

ethers.utils.formatEther('1000000000000000000') // return 1.0

Sie können die BigNumber-Bibliothek verwenden :

var value_wei = "0x2c1c986f1c48000";
var value_ether = new BigNumber(value_wei).dividedBy(new BigNumber("1000000000000000000");

Zur Erklärung: Ethereum arbeitet mit Einheiten von Wei. 1 Ether ist 1e18 wei, also müssen Sie mit Zahlen umgehen, die zu groß sind, um von Javascript verarbeitet zu werden. Die BigNumber-Bibliothek akzeptiert die Darstellung von Zahlen als Zeichenfolgen, sodass Sie dieses Problem umgehen können.

Beachten Sie, dass alle Funktionen in web3.js immer Werte in wei als BigNumber-Objekt zurückgeben, sodass die Rückgabe von web3.eth.getBalance(...) beispielsweise direkt mit den obigen Zeilen verwendet werden kann.