LibreOffice-Berechnungsgenauigkeit

Inhärentes Genauigkeitsproblem

LibreOffice Calc verwendet, genau wie die meisten anderen Tabellenkalkulationsprogramme, Fließkomma-Rechenfunktionen, die auf Hardware verfügbar sind. Angesichts der Tatsache, dass die meisten modernen Geräte binäre Fließkommaarithmetik mit begrenzter Genauigkeit verwenden, die im IEEE 754-Standard definiert ist, können viele Dezimalzahlen – einschließlich so einfacher wie 0,1 – in LibreOffice Calc (das intern 64-Bit-Zahlen mit doppelter Genauigkeit verwendet) nicht genau dargestellt werden.

Berechnungen mit diesen Zahlen führen zwangsläufig zu Rundungsfehlern, und diese häufen sich bei jeder Berechnung an.

Dies ist kein Fehler, sondern beabsichtigt und derzeit unvermeidbar, ohne dass komplexe Berechnungen in der Software verwendet werden, die unangemessene Leistungseinbußen nach sich ziehen würden, und steht daher außer Frage. Benutzer müssen dies berücksichtigen und bei Bedarf Rundungen und Vergleiche mit Maschinengenauigkeit (oder Einheitenrundung) verwenden.

Ein Beispiel mit Zahlen:

A

1

31000.99

2

32000.12

3

=A1-A2


Dies führt zu -999,129999999997 in A3 anstelle des erwarteten -999,13 (Sie müssen möglicherweise die angezeigten Dezimalstellen im Zellformat erhöhen, um dies zu sehen).

Ein Beispiel mit Datum und Uhrzeit:

Aufgrund der Besonderheiten der Zeitdarstellung in Calc gilt dies auch für alle Berechnungen mit Zeiten. Beispielsweise zeigen die Zellen A1 und A2 unten die Datums- und Uhrzeitdaten wie eingegeben (im ISO 8601-Format):

A

1

2020-04-13 12:18:00

2

2020-04-13 12:08:00

3

=A1-A2


In Zelle A3 wird 00:10:00 angezeigt, wenn die Standardformatierung [HH]:MM:SS auf die Zelle angewendet wird. Zelle A3 zeigt jedoch 00:09:59.999999 anstelle des erwarteten 00:10:00.000000 an, wenn sie mit der Formatzeichenfolge [HH]:MM:SS.000000 formatiert ist. Dies geschieht, obwohl nur ganze Stunden und Minuten verwendet wurden, da intern jede Zeit ein Bruchteil eines Tages ist, wobei 12:00 (Mittag) als 0,5 dargestellt wird.

Die Daten in A1 werden intern als 43934,5125 und in A2 als 43934,5055555555591126903891563 dargestellt (was keine exakte Darstellung der eingegebenen Datumszeit ist, die 43934,5055555555555555555 wäre…).

Ihre Subtraktion ergibt 0,00694444443287037, einen etwas geringeren Wert als erwartet 0,0069444444444…, was 10 Minuten entspricht.

Bitte unterstützen Sie uns!