Rechnet Numbers falsch oder steh ich auf dem Schlauch?

MahatmaGlück

MahatmaGlück

Aktives Mitglied
Thread Starter
Dabei seit
21.10.2003
Beiträge
5.834
Reaktionspunkte
62
Hallo zusammen,

ich bin gerade dabei meinen Stromverbrauch zu überprüfen und hatte ein paar Zahlen in Numbers eingetragen.
Unten im Beispiel soll Numbers Differenzen ausrechnen (z.B. 13097,9-12933), dabei liefert es mir bei zwei Zahlenpaaren krumme Ergebnisse. Kann sich das jemand von euch erklären?

:confused:

Die Zellformate stehen alle auf "automatisch" und die Zahlen sind alle per Hand eingetippt. Also nichts gerundetes oder so.
Numbers Version 3.2.2 (1878) unter Mavericks

Bildschirmfoto 2014-11-16 um 11.03.19.png
 
Ich hab das gerade mal nachgestellt, hier ist es genauso.
Numbers 3.5 (2109) unter Yosemite

ich denke, das Komma ist Schuld.
Zellformat "Automatisch" macht bei normalen zahlen eine Ganzzahl und bei Kommazahlen einen anderen wert draus.
Stell hier mal was mit maximal 1-2 Nachkommastellen Genauigkeit ein.

Andererseits ist das Ergebnis ja auch definitiv falsch.... :noplan:


edit:
Wenn man die Dezimalen auf irgendeinen Wert setzt ist das Ergebnis korrekt.
Sobald bei den Dezimalen Autom. steht ist das Ergebnis falsch. :confused:
 
Zuletzt bearbeitet:
Unabhängig von tocotronauts Lösungsansatz ist mein Verdacht, dass »nur« die Darstellung des Ergebnisses der Gleitkommarechnung fehlerhaft ist:

164,79̅ ist ja mathematisch dasselbe wie 164,8

:D
 
Was kommt heraus, wenn man das Ergebnis wieder zum ersten Wert addiert?
 
Numbers benutzt bei der Subtraktion Gleitkommazahlen (da mindestens eine Zahl kein Integer ist). Dabei kann es vorkommen, das entweder eine der Eingaben oder die Ausgabe nicht (exakt) als Gleitkommazahl (mit der Genauigkeit bzw. Darstellung, die Numbers verwendet) darstellbar ist. Es wird dann in der Regel die nächstgrößere oder kleinere Gleitkommazahl für Berechnungen oder als Ergebnis benutzt. Daher kommen bei einigen Rechnungen diese vielen Nachkommastellen vor, die gerundet dennoch das korrekte Ergebnis ergeben. Numbers rechnet hier also mathematisch falsch, was aber sehr wahrscheinlich kein Programmierfehler (oder gar Prozessorfehler) ist, sondern einfach nur dem begrenzten Zahlenraum geschuldet ist. Kann man natürlich vermeiden, allerdings wird man das bei einer "Amateursoftware" wie einer Tabellenkalkulation (Numbers, aber auch Excel) wohl eher nicht machen, da man diese selten so einsetzt, dass diese Art Fehler wirklich zum Problem werden können.
 
  • Gefällt mir
Reaktionen: MahatmaGlück
Danke @Texnician

Als jemand, der häufiger mal mit Zahlen in Berührung kommt finde ich es überraschend bis wenig vertrauenserweckend, wenn bei solch einfachen Rechnungen ein offensichtlich falsches Ergebnis angezeigt wird.
Mag ja sein, dass technisch mehr dahinter steckt und selbst eine oberflächliche Fehlerbetrachtung lässt den Schluss zu, dass die zehnte Nachkommastelle beim Hundertstel nicht mehr ins Gewicht fällt.

Irgendwie doof finde ich es trotzdem :)
 
Ja, Profisoftware ist nicht Bug-frei. Die hier im Beispiel auftretenden Rechenfehler von Numbers sind aber sehr wahrscheinlich keine Bugs sondern einfach Unzulänglichkeiten des Programms, die die Entwickler wissentlich in Kauf genommen haben.

Edit: Ich kann durchaus verstehen, dass sich der "Nicht-Informatiker" bei solch unerwarteten Ausgaben wundert, aber es ist nunmal Realität. Wenn ich für jede Zahl nur 32bit Speicherplatz zulasse, kann ich (einfach gesagt) eben auch nur 2^(32) (verschiedene) Zahlen damit darstellen. Natürlich könnte man an Stelle von floats oder doubles auch extra eigene Datentypen benutzen, die dieses Problem nicht haben, nur geht dann eben auch die Komplexität des Programms entsprechend in die Höhe, obwohl im Falle von Numbers vielleicht nur ein sehr kleiner Teil der Anwender diese Genauigkeit wirklich brauchen.
 
Zurück
Oben Unten