die Analogie mit Exponenten-Darstellung in Betracht.
Angenommen, Sie haben 4 gültige Ziffern, so wird die Nummer 1234000.0
durch 1.234e6
dargestellt.
Versuchen Sie jetzt, 0.5
hinzuzufügen, die 1234000.5
sein sollte.
Auch wenn der Zwischenpuffer groß genug ist, um diese Signifikanz zu halten, ist seine Darstellung innerhalb der verbotenen Grenze immer noch 1.234e6
.
Aber wenn der Zwischenpuffer halten kann, sagen wir, nur 7 Ziffern, sind die ausgerichteten Werte hinzufügen
1234000
0
-------
1234000
so die 0.5
seine Bedeutung verliert, noch bevor die Zugabe durchgeführt wird. Im Fall von double
können Sie ziemlich sicher sein, dass der Zwischenpuffer 308 Stellen nicht äquivalent halten kann.
Obwohl "* double *" ist die Präzision *** *** begrenzt. – alk
Bis zu dem Zeitpunkt, an dem '0.5' für das Addieren ausgerichtet wurde, wird seine Signifikanz durch Verschieben der Mantisse (um die Exponenten anzupassen) verloren gehen, so dass es nur '0' addiert. –
Wenn in der Mantisse 52 Bits vorhanden sind, geschieht dies, wenn sich die Exponenten der beiden Operanden um mehr als 52 unterscheiden. Dies ist der Fall für Addition oder Subtraktion. Beim Multiplizieren und Dividieren ist das eine andere Sache. –