Seite 1 von 2

Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Di, 21.10.2008 21:18
von alram
hi,

ich habe in einem komplexeren OO Calc sheet immer wieder rechenfehler gehabt. bis datto hab ich mir irgendwie mit funktionen wie runden etc. geholfen. nun würde es mich aber doch interessieren, woher der fehler kommt. dazu hab ich den sheet genau unter die lupe genommen. dabei bin ich auf einen simplen fehler bei einer subtraktion gestossen. ich gebe bspw. folgende formel in einer zelle ein:

=25000,24-25000

dann steht richtigerweise 0,24 drinn. ABER - wenn ich unter den zellenformatierung auf sagen wir 20 nachkommastellen anzeigen lasse, dann steht da:

,24000000000160100000

ich bin aber der meinung es sollte ,240000000000000000 sein. gibts dafür einer erklärung? bin für jeden tipp dankbar.

lg alram

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Di, 21.10.2008 23:53
von EPsi
Hallo,

Tabellenkalkulationen rechnen nicht im Dezimalsystem sondern im Binärsystem (Theorie siehe http://de.wikipedia.org/wiki/Gleitkommazahl). Die Genauigkeit entspricht dabei ca. 16 Dezimalstellen. Es handelt sich hierbei nicht um Rechenfehler im eigentlichen Sinne sondern um Rundungs- und Umwandlungsfehler, die bei Tabellenkalkulationen unvermeidbar sind. Du solltest nie mehr Nachkommastellen anzeigen lassen, als du wirklich benötigst. Falls du eine höhere Genauigkeit als 16 Dezimalstellen benötigst, dann ist Calc das falsche Werkzeug.

Gruß

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Mi, 22.10.2008 08:23
von alram
Hallo EPsi,

danke für die info. es ist zwar eine erklärung für das verhalten, nur hilft mir das leider nicht weiter. in meinem beispiel kommen dann so probleme auf, wie bspw. 2 dividiert durch 2 ist nicht 1, sondern 0,xx. weil die erste 2 in wirklichkeit 1,9999999998 ist. die anzeige ist nicht mein problem, es geht um das weiterrechnen. in einzelnen fällen kann ich mich dann mit runden behelfen. wenn ich jedoch funktionen wie SUMMENPRODUKT verwende, kann ich keine darin enthaltenen teilberechnungen getrennt voneinander runden. gibts dafür nicht eine einstellung wo man sagen kann, das alle berechnungen im sheet immer auf 5 stellen gerundet werden sollten? weil mehr nachkommastellen brauch ich eigentlich nicht. 16 stellen sind für mich schon wieder viel zu genau...

danke & lg

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Mi, 22.10.2008 08:56
von pmoegenb
Hallo alram,
hast Du schon die Einstellung Genauigkeit wie angezeigt unter Extras/Optionen.../OpenOffice.org Calc/Berechnen getestet ?

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Mi, 22.10.2008 10:03
von Stephan
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?

Verfasst: Mi, 22.10.2008 21:52
von rl_doz
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?

Verfasst: Do, 23.10.2008 14:04
von alram
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?

Verfasst: Do, 23.10.2008 14:43
von rl_doz
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?

Verfasst: Do, 23.10.2008 14:46
von stbuerk
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?

Verfasst: Do, 23.10.2008 15:00
von Karolus
Hallo
Ja, multipliziere für die Berechnung alle Stückelungen und den eingegebenen Betrag mit 100.

Gruß Karo

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Do, 23.10.2008 15:04
von rl_doz
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

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Do, 23.10.2008 16:03
von alram
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?

Verfasst: Do, 23.10.2008 16:43
von stbuerk
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

Re: Rechenfehler (ungenauigkeit) bei Subtraktion?

Verfasst: Do, 23.10.2008 17:27
von alram
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?

Verfasst: Do, 23.10.2008 18:00
von Karolus
Hallo
Hier noch ein Entwurf mit etwas kürzeren Formeln:
Gruß Karo