❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Rechenfehler / Ungenauigkeit LO Calc

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Mr. Hobbybyte
Beiträge: 6
Registriert: Mi 3. Aug 2016, 12:59

Rechenfehler / Ungenauigkeit LO Calc

Beitrag von Mr. Hobbybyte » Mi 3. Aug 2016, 13:36

Nimmet man die Zahl 1234
Addiert in jeder der folgenden 28 (oder mehr) Spalten jeweils 0,12
Und summiert diese Zahlen auf, erhält man ein falsches Ergebnis :

35834,7199999999 statt 35834,72

LO Version Win 4.x -5.x
unabhängig von Berechnungeinstellungen
unabhängig von der Zellenformatierung

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von mikele » Mi 3. Aug 2016, 14:03

Hallo,

das ist das Problem der numerischen Mathematik. Intern werden die Rechnungen natürlich dual ausgeführt und (das verheerende) mit einer endlichen Stellenanzahl. Das führt dann genau zu diesen Ergebnissen und (leider) ein Grundproblem des Arbeitens mit jedweder Rechenmaschine ... :cry:
Gruß,
mikele

Mr. Hobbybyte
Beiträge: 6
Registriert: Mi 3. Aug 2016, 12:59

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von Mr. Hobbybyte » Mi 3. Aug 2016, 14:09

@mikele
Das habe ich auch zuerst gedacht, bis ich den Fehler näher analysiert habe.
Es kommen jetzt nur noch binär vollständig korrekt darstellbare Zahlen zum Einsatz.
Der Fehler muß bei der Addition der Einzelwerte entstehen, nicht bei der Umrechnung
in binäre Zahlenwerte. (MS Excel macht den Fehler nicht)

Nachtrag :
MS Excel macht den Fehler in den Versionen 4 bis 2013 genauso.
Er wird nur durch geschickte Rundung in der Standard Darstellung nicht angezeigt.

Zuletzt geändert von Mr. Hobbybyte am Do 4. Aug 2016, 11:00, insgesamt 1-mal geändert.

Mr. Hobbybyte
Beiträge: 6
Registriert: Mi 3. Aug 2016, 12:59

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von Mr. Hobbybyte » Mi 3. Aug 2016, 14:17

Für alle, die das Problem einfach nachvollziehen wollen , die Tabelle als Anhang
Rechenfehler_1.ods
(10.85 KiB) 263-mal heruntergeladen
Rechenfehler_1.xls
(7 KiB) 262-mal heruntergeladen

paljass
* LO-Experte *
Beiträge: 695
Registriert: Fr 18. Mär 2011, 15:34

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von paljass » Mi 3. Aug 2016, 14:34

Hallo Mr. Hobbybyte,
MS Excel macht den Fehler nicht
Ich hab grad kein Excel zum Testen, aber könnte es daran liegen dass du in Excel nur bis A28 summierst, in Calc aber bis A29?
paljass

Mr. Hobbybyte
Beiträge: 6
Registriert: Mi 3. Aug 2016, 12:59

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von Mr. Hobbybyte » Mi 3. Aug 2016, 14:58

Hallo paljass,
beide Tabellen sind mit LO gemacht und beide Tabellen sind in Excel fehlerfrei.
Das einmal bis A28 und einmal bis A29 ist ein Versehen, ändert aber an dem Problem nichts.
Erst , wenn man nur bis A27 addiert, verschwindet das Problem in LO, aber der Wert
in der letzten Zeile ist uninteressant, dafür aber nicht der Wert darüber.
Das Phänomen ist schon etwas seltsam, beruht aber wahrscheinlich auf einer fehlerhaften
Zwischensumme, die nicht korrekt berechnet wird.
Ich hatte ursprünglich eine sehr große Tabelle, bei der durch ungünstige Umstände im Endergebnis
Fehler im Prozentbereich entstanden sind. Ich habe es dann mit viel Arbeit auf diese kleine
Tabelle reduziert, um den Fehler einfacher reproduzierbar zu machen.

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von mikele » Mi 3. Aug 2016, 16:20

Hallo,
Es kommen jetzt nur noch binär vollständig korrekt darstellbare Zahlen zum Einsatz.
gestatte, dass ich widerspreche.
Die Zahl 0,12 ist leider im Dualsystem ein periodischer Bruch (mit einer 20-stelligen Periode) und zwar:
0,00011110101110000101 (diese 20 Nachkommastellen wiederholen sich auf ewig)
Rechnet man das ganze zurück so ergibt sich
(mit 20 Nachkommastellen): 0,00011110101110000101 (dual) = 1,1999988555908203125 (dezimal)
(mit 40 Nachkommastellen): 0,0001111010111000010100011110101110000101 (dual)=1,199999999998908606357872486114501953125 (dezimal)
Genug des akademischen Geschwafels.
An irgendeiner Stelle muss das Rechensystem abbrechen bzw. runden. Wie das Ganze passiert hängt von den internen Algorithmen ab (das ist dann schon ziemlich hohe Mathematik). Falsch, im streng mathematischen Sinn, rechnen sie alle, aber manche runden besser.
Das gleiche Problem tritt umgekehrt auch mit sehr großen Zahlen auf.
Die interne Darstellung als Gleitkommazahl mit doppelter Genaugkeit (also 52 duale Ziffern) bedeutet letztlich, dass eine Dezimalzahl höchstens mit 16 genauen Ziffern dargstellt wird. Der Rest wird abgeschnitten.
Die Zahl 1234567801234567890 wird so zu 1,23456789012346E+019 (unter LO)
edit: Unter Excel wird 1234567801234567890 zu 1,23456789012347E+019! (was auf die internen Vorgänge beider System schließen lässt)
Gruß,
mikele

Mr. Hobbybyte
Beiträge: 6
Registriert: Mi 3. Aug 2016, 12:59

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von Mr. Hobbybyte » Mi 3. Aug 2016, 19:33

@mikele
Da muss ich Dich leider korrigieren, wenn Du gestattest.
Die Werte werden natürlich nicht im Binärcode gespeichert,
sonst wäre ja der Umgang mit großen Zahlen überhaupt
nicht möglich. Meine Aussage binär bezog sich auf digital und damit
ist 0,12 perfekt und absolut genau als Floting Point 12/-2 zu speichern.
Problematisch sind Werte wie 1/3 , da diese bei der Speicherung in
digitaler Form eine Ungenauigkeit erfahren müssen, nicht aber die
Werte, die ich benutzt habe.
Alle in den oberen Tabellen aufgeführten Werte und Zwischenwerte sind
sogar noch als 32 Bit Floating Point mit absoluter Genauigkeit abzubilden.
(mit 64 Bit Floating Point natürlich auch). In der jetzt angehängten Testdatei
werden diese Werte natürlich absichtlich überschritten.

Weiterhin sagt die Anzeige nichts über die Genauigkeit der internen
Berechnung aus. Meine Versionen von Excel und Calc sind sehr ähnlich,
was die Genauigkeit der Speicherung von Werten angeht.
Hier ein Test, bei dem besonders die Zeile 50 interessant ist, da hier
zwischen Excel und Calc ein Unterschied besteht.
TestGenauigkeit2.xls
(17.5 KiB) 226-mal heruntergeladen

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von mikele » Mi 3. Aug 2016, 22:08

Hallo,
ich bin zwar nicht 100%ig sicher, ob Tabellenkalkulationen eine eigene Arithmetik integriert haben (was ich bezweifle), aber spätestens auf Prozessorebene erfolgt die Rechnung dual.
Die größte Zahl, die als 8-Byte-Fließkommazahl (doppelte Genauigkeit) darstellbar ist, ist etwa 1,798·10^308 und damit groß genug. Mittlerweile wird aber auch mit vierfacher Genauigkeit gearbeitet.
In deiner Tabelle bleibst du imer noch im Bereich der einfachen Genauigkeit (4 Byte).
Versuche mal, die Zahl 1,5E309 einzugeben ...
Ich kann mich aber auch irren.
Gruß,
mikele

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Rechenfehler / Ungenauigkeit LO Calc

Beitrag von mikele » Do 4. Aug 2016, 00:31

Hallo,

ich habe mal etwas probiert.
Bei folgender Rechnung

Code: Alles auswählen

=(1234+0,12)-1234
erwartet man natürlich 0,12 als Ergebnis. LO zeigt dieses Ergebnis in der Standardformatierung auch an. Lässt mann sich das Ergebnis aber mit ein paar mehr Kommastellen anzeigen (was ja eigentlich Quatsch ist) so erhält man: 0,119999999999891.
Der einzige workaround, der mir einfällt, wäre, das Ergebnis mittels Runden() zwingend zu runden.
Ist insgesamt nicht schön, wenn man solche Genauigkeiten benötigt.
Wie dieses numerische Problem unter Excel umgangen wird, weiß ich nicht. Es wäre bestimmt eine Herausforderung an die Entwickler von LO, die Calc-Engine dahingehend zu verbessern (grundsätzlich lösen kan man es aufgrund der endlichen Zahldarstellung natürlich nicht).
Gruß,
mikele


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten