Herbers Excel-Forum - das Archiv

Elementarer Arithmetikfehler in EXCEL??

Bild

Betrifft: Elementarer Arithmetikfehler in EXCEL??
von: UweG

Geschrieben am: 23.12.2006 13:15:45
Hallo *,
ich mag es kaum glauben, aber rechnet EXCEL (XP, SP2, Build 10.4302.4219) bei der Funktion REST(x;y) womöglich falsch?
Es sieht so aus, als würde bei der Ganzzahldivision der Rest dann falsch ermittelt, wenn Dividend und Divisor unterschiedliches Vorzeichen haben. Über die EXCEL-Regel, dass das Ergebnis immer das Vorzeichen des Divisors hat, kann man sowieso streiten, aber wo der Rest 2 herkommt, ist mir schon ein Rätsel...
Beispiele:
=REST(7;3) -> 1
=REST(-7;3) -> 2
=REST(7;-3) -> -2
=REST(-7;-3) -> -1
Kann das mal jemand überprüfen?
Gruß
Uwe
Bild

Betrifft: AW: Elementarer Arithmetikfehler in EXCEL??
von: UweG

Geschrieben am: 23.12.2006 13:33:17
Hallo *,
eine (nicht befriedigende) Erklärung liegt wohl darin, dass der REST-Funktion die GANZZAHL-Funktion zugrunde liegt. Damit werden negative Zahlen absolut aufgerundet, z. B. -7/3 =-2,333 also -3. Mit -7 - (-3 * 3) ergibt sich tatsächlich die Differenz 2.
Merkwürdig.
Gruß
Uwe
Bild

Betrifft: AW: Elementarer Arithmetikfehler in EXCEL??
von: Erich G.
Geschrieben am: 23.12.2006 13:50:55
Hallo Uwe,
GANZZAHL: Rundet eine Zahl auf die nächstkleinere ganze Zahl ab.
Das gilt für positive wie für negative Zahlen. Was daran ist unbefriedigend?
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht euch schöne Feiertage!
Bild

Betrifft: AW: Elementarer Arithmetikfehler in EXCEL??
von: UweG

Geschrieben am: 23.12.2006 18:09:41
Hallo Erich,
dass GANZZAHL() eben so arbeitet, ist nicht merkwürdig, aber die Auswirkungen auf REST() ist das Problem.
Wenn EXCEL meint, dass -7/3 den Rest 2 lässt, ist das nicht nachvollziehbar.
Der Zusammenhang mit GANZZAHL() ist laut Hilfe:
REST(zähler;nenner) = zähler - nenner * GANZZAHL(zähler/nenner)
Meines Erachtens ist es nur ok, wenn:
REST(zähler;nenner) = zähler - nenner * KÜRZEN(zähler/nenner)
VBA macht's ja auch (teilweise) richtig -7 mod 3 ist -1, ok.
Bei den Vorzeichen verhaspelt er sich dann aber auch: -7 mod -3 sei -1, naja....
Gruß
Uwe
Bild

Betrifft: AW: Elementarer Arithmetikfehler in EXCEL??
von: Erich G.

Geschrieben am: 23.12.2006 23:08:51
Hi Uwe,
von "richtig" oder "falsch" darf man da m. E. nicht sprechen,
die verschiedenen Möglichkeiten der Definition kann man natürlich
für mehr oder weniger anschaulich oder praktisch halten.
In manchen Programmiersprachen (vielleicht auch in Kalkulationsprorogrammen?)
werden einfach zwei Möglichkeiten (Anweisungen, Funktionen) angeboten.
Im Beispiel
 ABCDEFGHIJK
1 z-4-3-2-101234
2 D         
3REST3201201201
4z - D*GANZZAHL(z/D)3201201201
5z - D*KÜRZEN(z/D)3-10-2-101201
6           
7REST-3-10-2-10-2-10-2
8z - D*GANZZAHL(z/D)-3-10-2-10-2-10-2
9z - D*KÜRZEN(z/D)-3-10-2-101201

Formeln der Tabelle
ZelleFormel
C3=REST(C$1;$B3)
C4=C$1-$B4*GANZZAHL(C$1/$B4)
C5=C$1-$B5*KÜRZEN(C$1/$B5)
C7=REST(C$1;$B7)
C8=C$1-$B8*GANZZAHL(C$1/$B8)
C9=C$1-$B9*KÜRZEN(C$1/$B9)

ist es meiner Meinung nach anschaulich und nachvollziehbar, dass sich (etwa in Zeile 3) die Reste 0, 2 und 1 periodisch wiederholen, wenn man die Zahl (Zeile 1) schrittweise vermindert.
Für jede Zahl wird das nächstkleinere Vielfache des Divisors gesucht (grüne Spalte).
Bei z=-1 ist das dann -3, und der Rest ist 2.
Noch was zum Nachlesen:
http://de.wikipedia.org/wiki/Divisionsrest (Ganze Zahlen)
http://www.swisseduc.ch/informatik/werkstatt/multiplik/divmod/docs/divmod.pdf (Seiten 7 bis 9)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: Verstehe eure Weißwaschungsversuche nicht...
von: Luc:-?

Geschrieben am: 25.12.2006 03:27:42
...meine Herren! ;-)
Das ist ein schwerer Mathefehler in Excel. Punkt! Ich hab das mal in der Schule ganz anders gelernt. Und mit Ganzzahl hat das auch wenig zu tun. Die ist eben auch idiotisch definiert. Übrigens ist das wohl auch nicht mal die Schuld von MS, man hat in Redmond nur die Abwärtskompatibilität des vor Urzeiten mal eingekauften Programms gewahrt. Außerdem hatten sich andere Kalkulationsprogramme, die es idR richtig machen, schon längst darauf eingestellt. Da konnte man wohl bei MS schlecht alles wieder ändern. Dass sie wissen wie es richtig wäre, haben sie bei ihrer eigenen Kreation Works ja gezeigt! Auch Lotus 1-2-3 macht's richtig (da fkt wohl auch Ganzzahl im negativen Bereich anders). Ob OO diesen xlFehler mit übernommen hat, habe ich noch nicht überprüft.
Da VBA auch eine MS-Kreation ist, läuft es hier auch richtig und das Vorzeichen wird vom Dividenden übernommen, Uwe.
Die REST-Lösung aus dem Uralt-Excel folgt wohl eher irgendwelchen mehr oder weniger irrigen praktischen Überlegungen des damaligen Programmierers oder ist einfach nur Ausdruck seiner mathematischen Unzulänglichkeiten. Und sowas wird bis ins 21.Jhd mitgeschleppt! LOL
Es ist allerdings auch nicht schwer, sich eine richtig rechnende udF für diesen Zweck zu schreiben. Die kann dann allerdings nicht in andere KalkPgmm konvertiert wdn, obwohl die sicher genauso rechnen... (s.ob.) ;-)
Frohe Weihnachten allerseits!
Luc :-?
PS: Ich hab natürlich eine solche udF - DRest - und gleich noch welche für die verschiedenen Möglichkeiten bei Ganzzahl in neg/pos Zahlbereichen - IFloor, ICeil, IHigh, ILow.
Bild

Betrifft: AW: Schwerer Mathefehler?? Lesen hilft...
von: Erich G.

Geschrieben am: 25.12.2006 11:02:21
Hi Luc,
wenn etwas dem in der Schule Gelernten widerspricht, muss es noch lange nicht falsch sein!
Den folgenden Text habe ich (etwas abgewandelt) entnommen aus
http://www.inf.fh-flensburg.de/lang/algorithmen/grundlagen/zahlenth.htm
Sind diese Definitionen mathematisch "falsch" (was auch immer man darunter verstehen mag)?
Definition 1:
Sei n eine natürliche Zahl.
Die Relation "kongruent (mod n)" auf der Menge der ganzen Zahlen ist wie folgt definiert:
a kongruent b (mod n) <==> n|(a–b) für alle ganzen Zahlen a, b.
Kommentar:
Zwei Zahlen sind also kongruent modulo n, wenn ihre Differenz durch n teilbar ist.
Die Relation "kongruent (mod n)" ist eine Äquivalenzrelation.
Eine Äquivalenzrelation bewirkt eine Klasseneinteilung der Grundmenge in Klassen äquivalenter Elemente.
Die Äquivalenzklassen der Relation "kongruent (mod n)" enthalten jeweils diejenigen Zahlen,
die bei Division durch n denselben Rest ergeben, sie heißen deshalb Restklassen.
Die kleinste nichtnegative Zahl in jeder Restklasse heißt Repräsentant der Restklasse.
Die Relation "kongruent (mod n)" teilt die Menge der ganzen Zahlen in n Restklassen
mit den Repräsentanten 0, 1, 2, ..., n-1 ein.
Die Menge der Repräsentanten {0, 1, 2, ..., n-1} wird mit Zn bezeichnet.
Definition 2:
Sei a eine ganze Zahl, n eine natürliche Zahl.
Die Operation "mod" ist wie folgt definiert:
a mod n = b <==> a kongruent b (mod n) und 0<=b<n
Kommentar:
a mod n liefert den Repräsentanten der Klasse, in der a liegt.
Die Excelfunktion REST liefert das nach dieser Definition richtige Ergebnis.
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht schöne Feiertage!
Bild

Betrifft: AW: Schwerer Mathefehler?? Lesen hilft...
von: Luc:-?

Geschrieben am: 26.12.2006 02:51:22
Hallo Erich,
warum machen's dann die anderen Kalkpgmm anders! Wohl, weil REST im negativen Zahlenbereich sonst nicht praxistauglich ist. Korrigiere mich also nur insofern, dass der ursprüngliche Pgmmierer wohl ein Mathetheoretiker war. ;-)
Man hätte da ja auch verschiedene Fktt schaffen können! Jedenfalls kann ich so eine REST-Fkt für negative Zahlen nicht gebrauchen. Lotus 1-2-3 transformiert Formeln mit dieser Fkt deshalb auch in etwas komplexere Formeln, nicht einfach in seine MOD-Fkt. Und immerhin läuft es in Works und VBA ja auch anders. Modulo muss ja auch nicht mit dem klassischen Verständnis des Divisionsrestes übereinstimmen. Insofern ist die dt Bezeichnung der Fkt falsch gewählt, genauso wie SUMMENPRODUKT, das eigentlich Produktsumme heißen müsste... Aber das weißt du ja! ;-)
Schönen 2.Feiertag und Guten Rutsch ins Neue!
Luc :-?
 Bild
Excel-Beispiele zum Thema "Elementarer Arithmetikfehler in EXCEL??"
Web-Seiten mit Excel95 öffnen Verhinderung der Formatumwandlung durch Excel
VBA-DateDiff und Excel-DATEDIF Excel für die Zeit eines Dialogaufrufes ausblenden
UserForm an Excel-Fenster anpassen Excel zu HTML
Excel-Dateien eines Ordners listen Makro in Abhängigkeit der Excel-Version verzweigen
Variable in Excel-Formel einbauen. Spracheinstellung der Excel-Anwendung feststellen