Rechenfehler (ungenauigkeit) bei Subtraktion?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Rechenfehler (ungenauigkeit) bei Subtraktion?

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von stbuerk » Fr, 24.10.2008 08:38

Tja, insgesamt schon ein interessanter Fall.

Zufällig habe ich gerade festgestellt, dass (immer???) richtig gerechnet wird, wenn man den Ausdruck so schachtelt dass erst dividert und dann subtrahiert wird wenn also z.B. in Zelle B6 steht:

=ABRUNDEN(($B$2/A6-SUMMENPRODUKT($A$5:A5;$B$5:B5)/A6))

dann kann man offensichtlich sogar auf den 1/10 Cent Zuschlag verzichten?


Stefan

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von hawe » Do, 23.10.2008 20:57

Was ihr hier schildert ist ein Phänomen, das beim Rechnen mit Maschinenzahlen als Auslöschung bezeichnet wird - Das ist die Differenzbildung mit einem zu erwartendem Ergebnis nahe 0. Dem begegnet man ganz allgemein damit, dass man eine Genauigkeitgrenze eps festlegt - Du hast was von eps=10^-4 gesagt und insbesondere Differenzen (die ein Ergebnis nahe 0 haben können) damit rundet. Also

Code: Alles auswählen

=ABRUNDEN(RUNDEN($B$2-SUMMENPRODUKT($A$5:$A18;$B$5:$B18);4)/A19)
Genauso problematisch ist eine Abfrage auf 0
WENN(A1-B1=0;....
sollte man besser nicht fragen, sondern
WENN(RUNDEN(A1-B1;4)=0;.....
oder
WENN(A1-B1<10^-4;....

Und hilfts?

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von Karolus » Do, 23.10.2008 18:00

Hallo
Hier noch ein Entwurf mit etwas kürzeren Formeln:
Gruß Karo
Dateianhänge
banko_2.ods
(10.21 KiB) 76-mal heruntergeladen

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von alram » Do, 23.10.2008 17:27

stbuerk hat geschrieben:Nochmal Hallo,
das mit dem zehntel-Cent dazufügen funktioniert wunderbar (siehe Anlage).
Man kann auch einen hundertstel oder zehntausendstel nehmen, solange man nur weit genug von der Rundungegrenze weg ist.
Natürlich keinen halben, dann wird fallsch gerundet,

Stefan
hallo stefan,

beider variante mit SUMMENPRODUKT gehts leider net ...

lg alram

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von stbuerk » Do, 23.10.2008 16:43

Nochmal Hallo,
das mit dem zehntel-Cent dazufügen funktioniert wunderbar (siehe Anlage).
Man kann auch einen hundertstel oder zehntausendstel nehmen, solange man nur weit genug von der Rundungegrenze weg ist.
Natürlich keinen halben, dann wird fallsch gerundet,

Stefan
Dateianhänge

[Die Dateierweiterung sxc wurde deaktiviert und kann nicht länger angezeigt werden.]

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von alram » Do, 23.10.2008 16:03

hallo,

danke nochmal für die raschen antworten.

@rl_doz:
"Im übrigen - bei Deiner Berechnung fehlt ein Cent." => der eine cent fehlt mir je genau wegen dieser rechenungenauigkeit. im übrigen fehlt er auch in deiner variante.

@stbuerk:
das mit dem zehntel dazu, hat leider nicht funktioniert. erst wenn ich 0,5 Cent dazurechne verändert sicht was, dann steht alledings ein cent zuviel im endergebnis.

@Karolus:
beträge mit 100 multiplizieren und dann wieder dividieren funktioniert auch. so kann ich das auch mit der summenprodukt funktion lösen.

also wie gesagt: danke für eure hilfe. mir ist die herkunft des fehlers nun klar. es gibt wohl keine möglichkeit, ausser den fehler direkt in den formeln zu behandeln ...

lg alram

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von rl_doz » Do, 23.10.2008 15:04

Hallo,

habe nochmal ein wenig an Deiner Tabelle gebastelt und nach dem in der Vormail beschriebenen Prinzip Deine Stückelung nochmals vorgenommen.

Im übrigen - bei Deiner Berechnung fehlt ein Cent.

Vielleicht gefällt Dir die angegebene Variante.

cu rene
Dateianhänge
banko_1.ods
(8.56 KiB) 90-mal heruntergeladen

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von Karolus » Do, 23.10.2008 15:00

Hallo
Ja, multipliziere für die Berechnung alle Stückelungen und den eingegebenen Betrag mit 100.

Gruß Karo

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von stbuerk » Do, 23.10.2008 14:46

Hallo,

addiere zu dem Ausganswert einen Zehntel Cent, dann steht man beim Runden nicht immer so dicht "an der Klippe des Abgrundes".
Nimm "Genauigeit wie Angezeigt" raus,
und Du kannst Dich wieder Deiner Kasse zuwenden, anstatt Open-Office posting.php?mode=smilies&f=2#
:wink:

Stefan

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von rl_doz » Do, 23.10.2008 14:43

Hallo,

jetzt, da ich Deine Tabelle mal gesehen habe, fällt mir vielleicht noch was ein. Vielleicht kann man das Problem auch dadurch lösen, dass man eine Restdivision durchführt nach dem Prinzip der Umwandlung von Dezimalzahlen in duale Zahlen, nur das hier eben den Wert der Noten entspricht.

Allerdings ist die Lösung mit dem Runden dem Problem entsprechend wirklich hinreichend.

Wenn Du allerdings dabei eine Dezimalstellen herausbekommst, dann weist Du ja, dass Du noch nicht alle Scheine beisammen hast (siehe Prinzip oben). Insofern musst Du schon sicher stellen, dass dieser Teil, so er richtig berechnet wurde, beachtet wird (kleinere Scheine).

Bis dann.


cu rene

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von alram » Do, 23.10.2008 14:04

hallo,

erstmal danke für alle, dies sich hier zu wort gemeldet haben und mithelfen/-geholfen haben. das ich nur nach einer erklärung gefragt habe, stimmt. aber eigentlich dachte ich durch eine erklärung auch gleichzeitig eine lösung zu haben. die angebotene lösung mit dem runden kenne ich eh, die verwende ich ja auch derzeit. allerdings funktioniert sie nicht immer (so wie ich es will).

@pmoegenb:
hast Du schon die Einstellung Genauigkeit wie angezeigt unter Extras/Optionen.../OpenOffice.org Calc/Berechnen getestet ? => hab ich schon gemacht - ändert nichts am verhalten.

@sanne:
Die Formel:
=2/2=1
ergibt jedenfalls WAHR
=> diese formel so eingegeben ergibt (gott sei dank) natürlich immer wahr. aber bei mir kommt in dieser situation anstatt die zahl 2 natürlich das rechenergebnis einer andere zelle 'herein' welches eben 1,99999998 ist - und genau da liegt mein problem.

konkret tritt das problem bspw. bei einem kleinem übungsbeispiel auf:
a) user gibt in eine zelle einen beliebigen betrag ein
b) darunter soll mit formeln autom. errechnet werden, wieviele euro scheine/münzen herauszugeben sind, um auf diesen betrag zu kommen. natürlich ist die grösstmögliche stückelung gefragt.

wenn man das beispiel mit hilfsspalten umsetzt (siehe anhang, tabelle1) so sieht man wie es sein kann das die division 0,01/0,01 = 0 (Formel in Zelle B19) ergibt. der grund ist klar: sehen tut man den wert auf 2 stellen gerunden, der dahinter errechnete wert ist allerding 0,00999x. in diesem beispiel kann man sich mit der RUNDEN funktion weiterhelfen - klar. fördert zwar nicht die übersichtlichkeit der formeln, löst aber das problem.

wenn ich das beispiel nun aber eleganter lösen möche (ohne die hilfsspalte 'Restbetrag'), so kann ich dies mit der funktion SUMMENPRODUKT. siehe anhang, tabelle 2. da habe ich aus meiner sicht eine elegantere lösung (da weniger nicht benötigte zwischenergebnisse vorhanden sind), dafür kann ich den rechenfehler nicht mehr korrigieren. oder hat hier jemand eine idee?
banko.ods
stückelungsbeispiel
(11.42 KiB) 89-mal heruntergeladen
lg alram

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von rl_doz » Mi, 22.10.2008 21:52

Hallo,

vielleicht hilft Dir das ja weiter.

Stefan hat ja schon erklärt, wie es zu dem Fehler kommt. Und jetzt suchst Du nach einer Lösung für das Problem mit dem dividieren von vermeintlich ganzen Zahlen?

Wird 1,9999999995 durch eine andere Darstellung als 2 angezeigt (wenn man z. B. mit den entsprechenden Symbolen aus der Symbolleiste arbeitet) und dann kommt beim dividieren (oder entsprechend subtrahieren) durch 2 eine "krumme" Zahl raus und nicht 1, dann hättes Du zwei Möglichkeiten:

1. Weg: Du solltest klären, ob die Berechnung der 1,99999999995 korrekt ist und ob dabei immer solche Zahlen enstehen können - ist das der Fall, dann wäre der zweite Weg der falsche!

2. Wenn sicher gestellt ist, dass dabei nur ganze Zahlen herauskommen sollen, so arbeite doch mit der Funktion "RUNDEN" auf Null-Stellen genau. Dann wird aus der 1,9999999995 eine 2 und beim dividieren durch 2 entsteht Deine 1.

Die Genauigkeit des rundens kannst Du ja festlegen. Selbst die Art des rundens kann festgelegt werden (Aufrunden, Abrunden dgl. mehr). Mit etwas Arbeit ließe sich soetwas sogar mit einer Bedingung verknüpfen, sodass erst ab einer bestimmten Genauigkeitsabweichung entsprechend gerundet wird.

Die Frage ist nun, wieso musst Du so genau rechnen, wenn Du weist, dass die Ergebnisse nie über, sagen wir mal 4 Stellen hinausgehen? Dann interessiert die 5 oder wie hier die 16. Stelle nicht...

Hoffe geholfen zu haben.

cu rene

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von Stephan » Mi, 22.10.2008 10:03

nur hilft mir das leider nicht weiter
Du wolltest eine Erklärung für das Verhalten und keine Lösung

Sorry, nur im Konkreten scheint mir das nicht kleinkariert, denn genauso hatte (auch) ich Dich verstanden, denn nirgens ist von Problemen die Rede so das man annehmen mußte Du würdest Dich lediglich für ein unerwartetes Verhalten interessieren, das Dir aufgefallen wahr.


Eine mögliche Lösung ist die Berechnung so durchzuführen das der eigentliche Rechenschritt mit Ganzzahlen erfolgt:

=(2500024-2500000)/100



Gruß
Stephan

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

von pmoegenb » Mi, 22.10.2008 08:56

Hallo alram,
hast Du schon die Einstellung Genauigkeit wie angezeigt unter Extras/Optionen.../OpenOffice.org Calc/Berechnen getestet ?

Nach oben