Hey alle, schnelle Frage: Wie wird ein .NET decimal
Typ binär im Speicher dargestellt werden?Binäre Darstellung eines .NET Dezimal
Wir alle wissen, wie Gleitkommazahlen gespeichert werden und die auf diese Weise die Gründe für die Ungenauigkeit davon, aber ich kann keine Informationen über decimal
mit folgenden Ausnahmen finden:
- offenbar genauer als Fließ- Punktzahl
- Takes 128 Speicherbits
- 2^96 + sign Bereich
- 28 (manchmal 29?) Gesamt signifikante Ziffern in der Anzahl
Gibt es eine Möglichkeit, das herauszufinden? Der Informatiker in mir verlangt die Antwort und nach einer Stunde Recherche kann ich ihn nicht finden. Es sieht so aus, als gäbe es entweder eine Menge verschwendeter Teile oder ich stelle mir das nur in meinem Kopf vor. Kann jemand bitte etwas Licht darauf werfen? Vielen Dank.
+1 fantastische Antwort, auf den Punkt und reich an Informationen. – JoshD
@Jacob: Nein, das ist * eindeutig * nicht wahr. Da Sie mit einer Ganzzahl beginnen und mit (sagen wir) 0,1 enden können, verschiebt sich das offensichtlich nach rechts. Wenn Sie * nur * nach links verschieben könnten, könnten Sie 10, 100 usw. darstellen - aber nicht 0,1, 0,01 usw. Warten Sie in Zukunft auf ein "ack", bevor Sie die Bedeutung einer Antwort signifikant ändern. Siehe die Dokumentation für 'decimal': http://msdn.microsoft.com/en-us/library/1k2e8atx.aspx - wobei der Skalierungsfaktor als * Dividieren * der Ganzzahl gesprochen wird, was äquivalent ist, ihn zu verschieben Recht. –
Entschuldigung. Für mich ist es intuitiver, wenn man daran denkt, dass der * Dezimalpunkt * nach * links * verschoben wird, aber ich sehe jetzt, dass Sie die Mantisse "verschieben". – Jacob