Clever-Excel-Forum

Normale Version: [Excel] Rechnet Excel falsch?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ab und zu bestehen bei Nutzern von Excel Zweifel, ob das Programm überhaupt richtig rechnet.

Hierzu ein kleines Beispiel:

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
15,00  
24,90  
30,100,10FALSCH

ZelleFormel
A3=A1-A2
C3=A3=B3
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Eine einfache Subtraktion von zwei Werten ergibt das scheinbar richtige Ergebnis 0,1. Wenn ich diesen Wert mit einer händischen Eingabe in B3 vergleiche, gibt mir Excel den Wert FALSCH aus.

Wenn ich das Format in A3 von einer Zahl mit 2 Dezimalstellen auf eine Zahl mit 16 Dezimalstellen ändere, dann ist auch zu erkennen, warum der Vergleich von Excel als FALSCH berechnet wird.

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
15,00  
24,90  
30,09999999999999960,10FALSCH

ZelleFormel
A3=A1-A2
C3=A3=B3
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Der Grund für diese Abweichung (die nicht nur Excel betrifft, sondern auch bei anderen Programmen auftritt), ist ein Problem bei der Gleitkommaberechnung und der Umrechnung von Dezimalzahlen in duale Werte.

Wer sich mit diesem Problem näher beschäftigen will, findet auf diesen Seiten weiterführende Erläuterungen:

http://support.microsoft.com/default.asp...b;de;42980
http://www.kmkorn.de/artikel/fp/fp.htm
http://www.bernd-leitenberger.de/genauig...tern.shtml
http://de.wikipedia.org/wiki/Gleitkommazahl
http://de.wikipedia.org/wiki/IEEE_754

Die Lösung für dieses Problem ist eigentlich relativ einfach: Die Funktion Runden()

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
15,00  
24,90  
30,10000000000000000,10WAHR

ZelleFormel
A3=RUNDEN(A1-A2;2)
C3=A3=B3
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Eine andere Möglichkeit wäre, die Option 'Genauigkeit wie angezeigt festlegen', die in Excel bei den 'Erweiterten Optionen' zu finden ist.

Diese Methode hat allerdings den Nachteil, dass die Werte tatsächlich ihre Genauigkeit verlieren und nicht mehr wiederhergestellt werden können. Im kaufmännischen Bereich mag das verschmerzbar sein, im technischen Bereich könnte es hier schon anders aussehen.

Man sollte sich hier wirklich Gedanken machen, ob die Verwendung der Funktion Runden() nicht die sinnvollere Alternative ist.