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)
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.
Sonnig
parseInt(0x2c1c986f1c48000, 16) / Math.pow(10, 18)
Link