Am 23.05.2018 um 17:45 schrieb André Piotrowski:
Hallo Leute,
ich bin vor einiger Zeit über einen Fehler in Calc gestolpert. Obwohl es
sich um einfache (im Dualsystem gut darstellbare) Zahlen handelt,
Und hier irrst du. Bei *einer* der Zahlen handelt es sich um eine
Gleitkommazahl, und Gleitkommazahlen sind (bis auf ganz wenige spezielle
Ausnahmen[1]) praktische *nie* binär exakt darstellbar.
[1] nämlich wenn der Nachkommawert exakt dem Vielfachen des Kehrwerts
einer Zweierpotenz entspricht, also z. B. 0,25 (1/(2^2)), 0,625
(5/(2^3)) usw.; mit z. B. dem Wert 702,125 hättest du also keinen
Rundungsfehler bekommen.
führt
bereits eine Reihe simpler Addition zu Ungenauigkeiten – siehe Anhang
(einmal als ODS, einmal als PDF).
Schon die *erste* deiner Zahlen ("702,1") ist binär nicht exakt
darstellbar; das pflanzt sich natürlich bis zum Endergebnis fort. Wenn
du es nicht glaubst, prüf es selber nach auf
https://www.h-schmidt.net/FloatConverter/IEEE754de.html . Die Seite
stellt zwar nur 32-Bit-Werte dar, Calc verwendet dagegen ein
64-Bit-Format. Das ändert aber nix am grundsätzlichen Prinzip, sondern
verschiebt lediglich den Fehler um ein paar Stellen nach hinten.
Wolfgang
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.