Libre Office Version: 5.2.0.4 Build-ID: 066b007f5ebcc236395c7d282ba488bca6720265-Calc - Zahlenausgabe

Hallo liebe Nutzer,

durch Zufall ist mir heute aufgefallen, dass bei Einstellung des Zellformats "Standard" die Berechnung von z. B. 100,16-100,15 den Wert 0,009999999999991 ausgibt. Bei allen anderen Formaten mit Nachkommastellen ist die Darstellung mit 0,01 korrekt.

Ist das so von den Entwicklern beabsichtigt?

Schönen Tag für Euch alle!

Lieber Gruß aus Rhein-Main

Stefan

Ja und nein. Das *eigentliche* Problem liegt darin, dass bestimmte
/dezimale/ Werte (wie hier eben 0,16) nicht exakt im /binären/
Zahlensystem abgebildet werden kann, sondern nur annähernd, in dem Fall
als 0,15999999999999700000. Die von Dir beobachtete Abweichung besteht
schlicht in diesem Abbildungsfehler.

Dass diverse andere Formate die Abweichung nicht darstellen, liegt
einfach nur daran, dass diese eben auf eine geringere Anzahl Stellen
runden, wodurch sich dieser Abbildungsfehler und der durch das Runden
eigentlich verursachte Rundungsfehler gegenseitig wieder aufheben.

Das ist aber nix Calc- oder OO-spezifisches, sondern damit haben
prinzipiell *alle* Programme zu kämpfen, die in einem binären
Zahlensystem mit dezimalen Werten rechnen (oder allgemeiner ausgedrückt,
Werte aus einem Zahlensystem in ein anderes abbilden müssen).

Wolfgang

Wolfgang,

deine Erklärung ist nur zur Hälfte richtig. Prinzipiell könnten
Dezimalzahlen sehr wohl exakt in Binärzahlen abgebildet werden (beides
sind nur Darstellungsformen der selben Zahl - Mathematik). Das Problem
liegt darin, dass man die Genauigkeit auf eine bestimmte Anzahl von
Stellen begrenzen muss (bei interner Verwendung von Gleitkommazahlen
z.B. typischerweise 16 oder 20) - daher die kleine Differenz.

Helmut

Nein; selbst im Dezimalsystem gibt es Zahlen, die nicht exakt
darstellbar sind (z. B. 1/3).

Wolfgang

Hallo Helmut,

was, bitte schön, verstehst Du unter exakt?

Gruß, Klaus

deine Erklärung ist nur zur Hälfte richtig. Prinzipiell könnten
Dezimalzahlen sehr wohl exakt in Binärzahlen abgebildet werden (beides
sind nur Darstellungsformen der selben Zahl - Mathematik).

Nein; selbst im Dezimalsystem gibt es Zahlen, die nicht exakt
darstellbar sind (z. B. 1/3).

Richtig. Obwohl das Beispiel von 1/3 meiner Meinung nicht ganz stimmt -
rationale Zahlen (Brüche) lassen sich zumindest mit einer unendlichen
Anzahl von Stellen genau angeben. Bei irrationalen Zahlen (z.B. Pi oder
die Eulersche Zahl e ist das noch eine Stufe darüber (keine Perioden
etc.). Das würde aber für das gegenständliche Problem zu weit führen.

Helmut

Hallo Helmut,

was, bitte schön, verstehst Du unter exakt?

Vermutlich das selbe wie die meisten. Dass es keine Differenzen gibt.
Beim Dezimalsystem sind die Ziffern Zehnerpotenzen (nach dem Komma 1/10,
1/1000, 1/1000 ...). Beim Binärssystem wären das 1/2, 1/4, 1/8, 1/16, ...
Das Problem ist, dass kaum jemand diesen Mechanismus benutzt. Die
"genaueste" Darstellung unserer gewohnten Zahlen wäre im BCD-Code
(https://de.wikipedia.org/wiki/BCD-Code) - jede Ziffer ein halbes Byte
von 0 bis 9. Das wird aber wegen der Speicherverschwendung kaum
verwendet (außer bei einigen Datenbanken, wo man die Genauigkeit für
solche Zahlen mit Stellen vor und nach dem Komma angeben muss). Meistens
verwendet man Gleitkommazahlen
(https://de.wikipedia.org/wiki/Gleitkommazahl,
https://de.wikipedia.org/wiki/IEEE_754), und dabei kommt es zu einem
Verlust an Genauigkeit.

Helmut

Nein, denn um diese unendliche Anzahl von Stellen *tatsächlich*
anzugeben bräuchtest Du länger, als das Universum überhaupt noch existiert.

Du kannst es /andeuten/ (z.b. durch einen Querstrich über der sich
wiederholenden Zahl bzw. Sequenz), aber nicht wirklich /exakt/ /angeben/.

Wolf "oder wie Äsop sagte: 'Hic Rhodus, hic salta!'" gang