Dieser Vertrag hat ERC20-Token namens VSL ausgegeben. Der Gesamtvorrat soll 33.390.496,03337560002666059 betragen, aber wenn Sie den Vertrag überprüfen, wird dieser Wert als uint256 gespeichert, was bedeutet, dass sein Wert 33390496033375600026660590 beträgt. Wie konvertieren Sie einen uint256, um den korrekten ausgegebenen Betrag zu erhalten?
Beim Erstellen eines Tokens gibt der Ersteller des Tokens die Anzahl der Nachkommastellen an, die er für seinen Token benötigt. Da Ethereum Dezimalzahlen nicht vollständig unterstützt, definieren die vom Kontaktersteller definierten Dezimalstellen die kleinste Einheit des Tokens. Wenn beispielsweise die Dezimalstelle für Token sagt, ABC Coin ist 2, bedeutet dies, dass die kleinste Einheit von ABC Token 0,01 ist. Um also jemandem 1 ABC-Coin zu schicken, müssen Sie ihm/ihr 100 (1*Anzahl Dezimalstellen) ABC-Tokens schicken.
Sprechen wir jetzt über Ihren Fall von VSL Token. Die Dezimaleinheiten des VSL-Tokens sind 18. Wenn also das Gesamtangebot ist 33390496033375600026660590
, dann bedeutet dies, dass das tatsächliche Angebot 33390496.03337560002666059
( 33390496033375600026660590/10^18 ) ist.
Teilen Sie es durch 1e18. Hätte vor dem Posten dieser Frage mehr lesen sollen.
Beachten Sie, dass Solidity keine Unterstützung für Fließkommazahlen bietet, sodass alles in ganzen Zahlen ausgedrückt wird. Für Token müssten Sie die angegebene Zahl mit der Dezimalvariablen multiplizieren oder dividieren, die der Token angegeben hat.
Eine ausführliche, von mir verfasste Dokumentation gibt es hier .
q9f