Genauigkeit bei Addition bzw. Subtraktion
Moderator: Moderatoren
-
- *
- Beiträge: 10
- Registriert: Di, 21.08.2007 23:24
Genauigkeit bei Addition bzw. Subtraktion
Hallo Forenmitglieder,
im Rahmen einer Messreihe nehme ich täglich Massenwiegungen (Genauigkeit bis 0,1 kg) vor, die ich in einer Tabelle mit Datum, Uhrzeit und gemessenem Gewicht festhalte. Zwischen aufeinanderfolgenden Messwerten bilde ich in einer eigenen Spalte jeweils die Differenz zwischen meinen Messwerten und werte diese anschließend statistisch in einem Häufigkeitsdiagramm mit der Funktion "HÄUFIGKEIT" aus. Da sich die Abweichungen maximal im Bereich zwischen +2kg und -2kg bewegen, habe ich das Diagramm im Maßstab der Genauigkeit, also in 0,1kg Schritten aufgeteilt.
Ich hatte nun festgestellt, dass bei Anwendung der Funktion "ZÄHLENWENN" der Messdaten für die entsprechenden Werte nicht die gleiche Anzahl herauskommt, wie bei der Anwendung der Funktion "HÄUFIGKEIT". Nach längerem Suchen habe ich dann herausgefunden (bei entsprechender Format-Einstellung), dass bei der Bildung der Differenzen Rundungsfehler auftreten, die die Diskrepanz der unterschiedlichen Anzahlen meiner Messauswertungen erklären. Also den Grund für die Diskrepanz kenne ich.
Was allerdings die Ursache in OO-Calc ist und wie man das abstellen kann, dahinter bin ich leider noch nicht gestiegen.
Daher meine Frage an Euch: wie kann ich bei einfachen Additionen / Subtraktionen die Rundungsfehler vermeiden?
Wo kann man evtl. hier entsprechende Einstellungen vornehmen bzw. das Problem umgehen.
Über entsprechende Hinweise von Euch würde ich mich freuen.
Gruß Stephan
im Rahmen einer Messreihe nehme ich täglich Massenwiegungen (Genauigkeit bis 0,1 kg) vor, die ich in einer Tabelle mit Datum, Uhrzeit und gemessenem Gewicht festhalte. Zwischen aufeinanderfolgenden Messwerten bilde ich in einer eigenen Spalte jeweils die Differenz zwischen meinen Messwerten und werte diese anschließend statistisch in einem Häufigkeitsdiagramm mit der Funktion "HÄUFIGKEIT" aus. Da sich die Abweichungen maximal im Bereich zwischen +2kg und -2kg bewegen, habe ich das Diagramm im Maßstab der Genauigkeit, also in 0,1kg Schritten aufgeteilt.
Ich hatte nun festgestellt, dass bei Anwendung der Funktion "ZÄHLENWENN" der Messdaten für die entsprechenden Werte nicht die gleiche Anzahl herauskommt, wie bei der Anwendung der Funktion "HÄUFIGKEIT". Nach längerem Suchen habe ich dann herausgefunden (bei entsprechender Format-Einstellung), dass bei der Bildung der Differenzen Rundungsfehler auftreten, die die Diskrepanz der unterschiedlichen Anzahlen meiner Messauswertungen erklären. Also den Grund für die Diskrepanz kenne ich.
Was allerdings die Ursache in OO-Calc ist und wie man das abstellen kann, dahinter bin ich leider noch nicht gestiegen.
Daher meine Frage an Euch: wie kann ich bei einfachen Additionen / Subtraktionen die Rundungsfehler vermeiden?
Wo kann man evtl. hier entsprechende Einstellungen vornehmen bzw. das Problem umgehen.
Über entsprechende Hinweise von Euch würde ich mich freuen.
Gruß Stephan
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Stephan,
In deinem Fall also (bei einer Stelle Genauigkeit) einfach *10, Kommastellen abschneiden, /10. Du kanst natürlich auch Rundungsfunktionen verwenden - oder direkt "Abschneide-Funktionen" - was dir eben am besten passt.
Wie gesagt, typisches "Rechenproblem".
Andererseits wundere ich mich: gibst du die Zahlen mit einer Stelle Geauigkeit ein? Und die Differnzspalte nutzt lediglich die Operation "minus"? Dann sollte das an sich auch so funktionieren. Oder hast du irgendwo Divisionen drin?
Gruss
Thomas
Gar nicht. Das ist kein Calc-Fehler, sondern ein normalen Problem aller Rechner: Hier können nur Bits zusammengezählt weren, das heisst, es muss mit einer bestimmten Genaueigkeit gerechnet werden (intern meist 8 oder 16 Stellen). Das führt bei Dezimalzahlen zwangsläufig zu Rundungsfehlern in den letzten Stellen. Um das zu Vermeiden, musst du mit Ganzzahlen rechnen.Daher meine Frage an Euch: wie kann ich bei einfachen Additionen / Subtraktionen die Rundungsfehler vermeiden?
In deinem Fall also (bei einer Stelle Genauigkeit) einfach *10, Kommastellen abschneiden, /10. Du kanst natürlich auch Rundungsfunktionen verwenden - oder direkt "Abschneide-Funktionen" - was dir eben am besten passt.
Wie gesagt, typisches "Rechenproblem".
Andererseits wundere ich mich: gibst du die Zahlen mit einer Stelle Geauigkeit ein? Und die Differnzspalte nutzt lediglich die Operation "minus"? Dann sollte das an sich auch so funktionieren. Oder hast du irgendwo Divisionen drin?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- *
- Beiträge: 10
- Registriert: Di, 21.08.2007 23:24
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Thomas,
vielen Dank für Deine Antwort.
Natürlich kann ich Deinem Vorschlag folgen und eine entsprechende Korrektur vornehmen; das sollte aber nicht der Regelfall sein. Denn es ist doch sehr verwunderlich, dass bei einer Differenzenbildung wie z. B. bei einer Subtraktion von "79,6" (Zelle A2) von "80,5" (Zelle A1), die durch die Anweisung "=A2-A1" realisiert ist, als Wert anstatt "0,900000" ein Wert von "0,8999999" herauskommt. Das sieht man aber erst, nachdem beim Format entsprechend viele Nachkommastellen eingegeben werden.
Da ich selbst viel im technischen Bereich programmiert habe (Finite-Elemente-Programme) habe ich auch entsprechende Erfahrungen im Hinblick auf numerische Genauigkeiten sammeln können. Entsprechende Rundungsfehler würde ich beispielsweise nur bei entsprechender Typdeklaration der Variablen erwarten.
Gruß Stephan
vielen Dank für Deine Antwort.
Natürlich kann ich Deinem Vorschlag folgen und eine entsprechende Korrektur vornehmen; das sollte aber nicht der Regelfall sein. Denn es ist doch sehr verwunderlich, dass bei einer Differenzenbildung wie z. B. bei einer Subtraktion von "79,6" (Zelle A2) von "80,5" (Zelle A1), die durch die Anweisung "=A2-A1" realisiert ist, als Wert anstatt "0,900000" ein Wert von "0,8999999" herauskommt. Das sieht man aber erst, nachdem beim Format entsprechend viele Nachkommastellen eingegeben werden.
Da ich selbst viel im technischen Bereich programmiert habe (Finite-Elemente-Programme) habe ich auch entsprechende Erfahrungen im Hinblick auf numerische Genauigkeiten sammeln können. Entsprechende Rundungsfehler würde ich beispielsweise nur bei entsprechender Typdeklaration der Variablen erwarten.
Gruß Stephan
-
- *******
- Beiträge: 1763
- Registriert: Di, 03.10.2006 18:05
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Stephan,
eine Zahl die mehrere Stellen hinter dem Komma besitzt und auf 2stellig hinter dem Komma formatiert wird, rechnet immer mit der "kompletten
Grundzahl". Angezeigt werden wiederum nur 2Stellen hinter dem Komma, die aber durch automatische Auf- und Abrundung nicht der
Berechnung nach "Adam Riese & Eva Zwerg" entspricht.
Also sind Deine Grundzahlen, hinter dem Komma, nicht 1stellig sondern 6- oder 7stellig.
Entsprechende Abhilfe schaffen die von Stephan genannten Funktionen "AUFRUNDEN"; "ABRUNDEN" oder "GANZZAHL" .
In der Ooo_Hilfe steht zur Funktion AUFRUNDEN() :
AUFRUNDEN
Diese Funktion ermöglicht es Ihnen, eine Zahl auf die von Ihnen festzulegenden Stellen aufzurunden.
Syntax:
AUFRUNDEN(Zahl; Anzahl)
Zahl ist die Zahl, die aufgerundet werden soll.
Anzahl (optional) ist die Anzahl der Stellen, auf die gerundet werden soll. Ist der Parameter Anzahl negativ, so wird auf Vorkommastellen gerundet.
Beispiel:
Aus der Eingabe des Wertes 123,343 und der Eingabe 2 im Feld Anzahl wird 123,35.
mfg
Gert
eine Zahl die mehrere Stellen hinter dem Komma besitzt und auf 2stellig hinter dem Komma formatiert wird, rechnet immer mit der "kompletten
Grundzahl". Angezeigt werden wiederum nur 2Stellen hinter dem Komma, die aber durch automatische Auf- und Abrundung nicht der
Berechnung nach "Adam Riese & Eva Zwerg" entspricht.
Also sind Deine Grundzahlen, hinter dem Komma, nicht 1stellig sondern 6- oder 7stellig.
Entsprechende Abhilfe schaffen die von Stephan genannten Funktionen "AUFRUNDEN"; "ABRUNDEN" oder "GANZZAHL" .
In der Ooo_Hilfe steht zur Funktion AUFRUNDEN() :
AUFRUNDEN
Diese Funktion ermöglicht es Ihnen, eine Zahl auf die von Ihnen festzulegenden Stellen aufzurunden.
Syntax:
AUFRUNDEN(Zahl; Anzahl)
Zahl ist die Zahl, die aufgerundet werden soll.
Anzahl (optional) ist die Anzahl der Stellen, auf die gerundet werden soll. Ist der Parameter Anzahl negativ, so wird auf Vorkommastellen gerundet.
Beispiel:
Aus der Eingabe des Wertes 123,343 und der Eingabe 2 im Feld Anzahl wird 123,35.
mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Win7_64 / LO_4.4.5.2
-
- *
- Beiträge: 10
- Registriert: Di, 21.08.2007 23:24
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Gert,
das stimmt an sich schon.
In meinem Fall gebe ich aber Zahlen mit 1 Stelle nach dem Komma ein.
Demzufolge sollte doch bei der Differenz auch nur 1 Stelle nach dem Komma verändert sein.
Ich habe gerade eben nochmals mein o. g. Beispiel in OO-Calc eingegeben (Version 2.2.1; Windows) und die Berechnung durchgeführt.
Anschließend habe ich unter Format die Anzahl der Nachkommastellen auf 20 hochgesetzt.
Bei den Ausgangszahlen stehen ab der 2. Nachkommastellen nur noch "0" (wie erwartet).
Bei meinem Ergebnis steht "0,90000000000000600000". Dieser Fehler macht sich eben dann bemerkbar, wenn man beispielsweise zu einem späteren Zeitpunkt mit der Funktion "ZÄHLENWENN(B1:B200;0,9) alle Zahlen mit 0,9 abzählen will. Die Funktion liefert nämlich als Ergebnis 0.
Gruß Stephan
P.S.: Nur zum Trost, der Fehler tritt in EXCEL exakt genauso auf (hab's gerade ausprobiert).
das stimmt an sich schon.
In meinem Fall gebe ich aber Zahlen mit 1 Stelle nach dem Komma ein.
Demzufolge sollte doch bei der Differenz auch nur 1 Stelle nach dem Komma verändert sein.
Ich habe gerade eben nochmals mein o. g. Beispiel in OO-Calc eingegeben (Version 2.2.1; Windows) und die Berechnung durchgeführt.
Anschließend habe ich unter Format die Anzahl der Nachkommastellen auf 20 hochgesetzt.
Bei den Ausgangszahlen stehen ab der 2. Nachkommastellen nur noch "0" (wie erwartet).
Bei meinem Ergebnis steht "0,90000000000000600000". Dieser Fehler macht sich eben dann bemerkbar, wenn man beispielsweise zu einem späteren Zeitpunkt mit der Funktion "ZÄHLENWENN(B1:B200;0,9) alle Zahlen mit 0,9 abzählen will. Die Funktion liefert nämlich als Ergebnis 0.
Gruß Stephan
P.S.: Nur zum Trost, der Fehler tritt in EXCEL exakt genauso auf (hab's gerade ausprobiert).
Re: Genauigkeit bei Addition bzw. Subtraktion
gib Deine Zahlen 80,5 und 79,6 und die Formel ein, stelle für alle Zellen die Formatierung auf eine Nachkommastelle ein und aktiviere unter Extras-Optionen-OpenOffice.org Calc-Berechnen "Genauigkeit wie angezeigt".In meinem Fall gebe ich aber Zahlen mit 1 Stelle nach dem Komma ein.
Demzufolge sollte doch bei der Differenz auch nur 1 Stelle nach dem Komma verändert sein.
ja, weil diese Funktion mit dem Zellwert und nicht mit der Zellanzeige arbeitet, mit Einstellung wie oben beschrieben erreichst Du das Zellwert und Zellanzeige identisch sind. (genauer gesagt unter Deinen spezifischen Anforderungen, denn es gibt auch noch Ausnahmen)Dieser Fehler macht sich eben dann bemerkbar, wenn man beispielsweise zu einem späteren Zeitpunkt mit der Funktion "ZÄHLENWENN(B1:B200;0,9) alle Zahlen mit 0,9 abzählen will. Die Funktion liefert nämlich als Ergebnis 0.
Gruß
Stephan
-
- *
- Beiträge: 10
- Registriert: Di, 21.08.2007 23:24
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Stephan,
vielen Dank für den Tipp.
Habe ihn gerade ausprobiert und es funktioniert.
Zumindest kenne ich jetzt eine Möglichkeit, wie man den Fehler (BUG?) umgehen kann.
Eine auf Dauer befriedigende Lösung ist das in meinen Augen aber nicht.
Gruß Stephan
vielen Dank für den Tipp.
Habe ihn gerade ausprobiert und es funktioniert.
Zumindest kenne ich jetzt eine Möglichkeit, wie man den Fehler (BUG?) umgehen kann.
Eine auf Dauer befriedigende Lösung ist das in meinen Augen aber nicht.
Gruß Stephan
Re: Genauigkeit bei Addition bzw. Subtraktion
nein es ist kein Bug(BUG?)
es gibt dafür keine Lösung. Dein Beispiel ist in gewisser Weise ungünstig, denn dafür wäre eine Lösung denkbar, nur für alle denkbaren Berechnungen in Analogie an DEin Beispiel ist keine Lösung denkbar, es ist schlicht ein Problem der numerischen Genauigkeit.Eine auf Dauer befriedigende Lösung ist das in meinen Augen aber nicht.
Natürlich wäre das Problem zu umschiffen wenn man die numerische Genauigkeit im Programm von derzeit so eta 15 Stellen (genaue Werte habe ich hier irgendwo ins Forum geschrieben) auf 1000 Stellen erhöht, aber bei 1001 Stellen ist dann wieder dieselbe Situation da. Es gibt schlicht kein Mittel 1/3 als Dezimalzahl völlig genau darzustellen - ja ich weiß das sich 1/3 von Deinen Zahlen unterscheidet und Deine Zahlen aufgingen, allein der interne Mechanismus berücksichtigt nicht solche Ausnahmen, weil es sehr viele gäbe. Bzw. er berücksichtigt die, aber eben genau mit der Einstellung die ich nannte und nur für eine maximale Gesamtstellenzahl (Summe der Ziffern vor und nach dem Komma).
Das Ganze geht aber durch Rechnen mit Strings, hierfür gibt es fertige Tabellen für Excel und dort kannst Du die Genauigkeit so hoch wählen wie Du sie brauchst, sie ist dann aber wieder nur so hoch wie Du sie brauchst und nicht unendlich.
Gruß
Stephan
-
- *******
- Beiträge: 1763
- Registriert: Di, 03.10.2006 18:05
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Doc Holiday,
OpenOffice_2.1 zeigt das Ergebnis 0,9 an, egal ob "Genauigkeit wie angezeigt" aktiviert oder deaktiviert ist. Und ohne zusätzliche Formatierung.
Unter "Optionen" --->"Berechnen" ---> Nachkommastellen=2
Das Ergebnis erscheint ebenso in "Excel_2003".
Es läßt sich auch nicht ergründen, warum eine andere Formatierung gewählt werden muß ?
mfg
Gert
OpenOffice_2.1 zeigt das Ergebnis 0,9 an, egal ob "Genauigkeit wie angezeigt" aktiviert oder deaktiviert ist. Und ohne zusätzliche Formatierung.
Unter "Optionen" --->"Berechnen" ---> Nachkommastellen=2
Das Ergebnis erscheint ebenso in "Excel_2003".
Es läßt sich auch nicht ergründen, warum eine andere Formatierung gewählt werden muß ?
mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
Win7_64 / LO_4.4.5.2
-
- **
- Beiträge: 42
- Registriert: Mi, 06.07.2005 21:30
- Wohnort: Osnabrücker Land (OL)
Re: Genauigkeit bei Addition bzw. Subtraktion
Hallo Gerd
Es spricht doch nichts dagegen, die Formel um die Funktion RUNDEN zu erweitern.
B1=RUNDEN((E1- D1);1)
Grüße Bernd
DocHoliday hat geschrieben:dass bei der Bildung der Differenzen Rundungsfehler auftreten, die die Diskrepanz der unterschiedlichen Anzahlen meiner Messauswertungen erklären.
Die Differenz wird doch (hier) in Spalte B gebildet, also etwa so: B1=E1- D1DocHoliday hat geschrieben:In meinem Fall gebe ich aber Zahlen mit 1 Stelle nach dem Komma ein.
Demzufolge sollte doch bei der Differenz auch nur 1 Stelle nach dem Komma verändert sein. ...
Bei meinem Ergebnis steht "0,90000000000000600000". Dieser Fehler macht sich eben dann bemerkbar, wenn man Beispielsweise zu einem späteren Zeitpunkt mit der Funktion "ZÄHLENWENN(B1:B200;0,9) alle Zahlen mit 0,9 abzählen will. Die Funktion liefert nämlich als Ergebnis 0.
Es spricht doch nichts dagegen, die Formel um die Funktion RUNDEN zu erweitern.
B1=RUNDEN((E1- D1);1)
Grüße Bernd
Re: Genauigkeit bei Addition bzw. Subtraktion
die Formatierung ist (bezüglich des Angefragten) funktionell egal, es geht hingegen um "Genauigkeit wie angezeigt", wegen:Es läßt sich auch nicht ergründen, warum eine andere Formatierung gewählt werden muß ?
weil diese Funktion mit dem Zellwert und nicht mit der Zellanzeige arbeitet, mit Einstellung wie oben beschrieben erreichst Du das Zellwert und Zellanzeige identisch sind. (genauer gesagt unter Deinen spezifischen Anforderungen, denn es gibt auch noch Ausnahmen)
Gruß
Stephan