Rechnen mit 15 signifikanten Stellen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von Stephan »

Hat jemand eine Erklärung für dieses merkwürdige Verhalten?
Deine Berechnungen stossen an die Grenze der möglichen maximalen Genauigkeit des Programms.



Gruß
Stephan
AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von AhQ »

Hallo,

dann multipiziere die Zahlen halt mit irgendwas großem, z.B. 10^9 oder sowas. Dann hast Du nicht mehr so viele Dezimalen und kannst sie wieder vergleichen.

Viele Grüße
AhQ
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von balu »

Hallo Chris Barista,

In Zelle B1 steht

Code: Alles auswählen

=RUNDEN(A1)
und angezeigt wird 1 (obwohl ja eigentlich auf 0 gerundet werden sollte).
Stimmt nicht ganz.
OIpenOffice.org Hilfe hat geschrieben: RUNDEN
Rundet eine Zahl auf eine festgelegte Anzahl von Nachkommastellen.
Syntax:
RUNDEN(Zahl; Anzahl)
Rundet die Zahl auf die Anzahl der Nachkommastellen. Wenn Anzahl leer oder Null ist, rundet die Funktion auf die nächste Ganzzahl. Wenn Anzahl negativ ist, rundet die Funktion zur nächsten 10, 100, 1000, etc.
Diese Funktion rundet auf die nächstgelegene Zahl.
Mit anderen Worten:
Calc verhält sich vollkommen korrekt, jedoch hast Du RUNDEN wohl nicht richtig verstanden. Das heißt, wenn Du deine Zahl auf 0,5 aufgerundet haben willst, so musst Du RUNDEN auch richtig einstellen, nämlich.

Code: Alles auswählen

=RUNDEN(A1;1)
Wenn Du den zweiten Parameter nicht mit angibst, dann wird aus einer Zahl mit Nachkommastellen eine Zahl OHNE Nachkommastellen.
d.h. es sieht so aus, als würde Calc 0.499999999999999
und 0.5 als gleich ansehen.
Da stimme ich dir zu. Das verhalten läßt sich reproduzieren, und ich finde auch dass das ein Fehler ist.

Da ich die Daten (um sie mit anderen vergleichen zu können) auf 9 Stellen runden möchte,
machte ich die Eingabe mit =RUNDEN(...) und da taucht dann dieser seltsame Fehler auf,
das sollte eigentlich nicht sein...
Dann nimm doch nicht RUNDEN, sondern z.B. ABRUNDEN und zwar wie folgt.

Code: Alles auswählen

=ABRUNDEN(A3;9)
1. Abrunden auf 10 Dezimalen (das macht Calc korrekt).
2. Dann Runden auf 9 Dezimalen (das funktioniert dann auch).
Und welche Funktion hast Du dafür eingesetzt?



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von Stephan »

Stimmt nicht ganz.
Mit anderen Worten:
Calc verhält sich vollkommen korrekt, [...]
Du zitierst ganz richtig:

... Wenn Anzahl leer oder Null ist, rundet die Funktion auf die nächste Ganzzahl. ...

so das ich die Antwort das sich Calc korrekt verhielte nicht ganz verstehe, denn die nächste Ganzzahl ausgehend von 0,499999999999999 ist 0 und nicht 1, da 0 nur 0,499999999999999 von 0,499999999999999 entfernt ist, 1 jedoch 0,500000000000001.

Kannst Du auch ganz leicht kontrollieren, denn schon bei Zelle A1 mit 0,49999999999999 (eine 9 weniger) errechnet Calc mit =RUNDEN(A1) das korrekte Ergebnis 0.

Oder was übersehe ich?

und ich finde auch dass das ein Fehler ist
naja, es ist ein bereits mehrfach diskutiertes Genauigkeitsproblem von Fließkommaoperationen (http://de.wikipedia.org/wiki/Gleitkommazahl) bei begrenzter Genauigkeit bzw. begrenzter absoluter Stellenzahl.
Calc kann ebend nur mit einer begrenzten Zahl von Ziffern umgehen (15 oder 16, ich habs aber schon irgendwo genau ins Forum geschrieben) und in Abhängigkeit von der konkreten Aufgabe ist dann zwangsläufig irgendwo SChluss und es muß gerundet werden. Ansonsten muß man eben mit Strings rechnen, für Excel findest Du dafür fertige Beispieldateien im Internet.
Ein Fehler hingegen ist das nicht direkt, nur eine technische Begrenzung, denn man könnte zu Lasten der Geschwindigkeit die beherrschbare Stellenzahl auch prinzipiell erhöhen nur ebend nie auf unendlich, selbst die Erhöhung der Genauigkeit um den Faktor 1000, also dann ca. 15.000 Stellen wäre ja eine Begrenzung.



Gruß
Stephan
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von balu »

Hallo Stephan,
Kannst Du auch ganz leicht kontrollieren, denn schon bei Zelle A1 mit 0,49999999999999 (eine 9 weniger) errechnet Calc mit =RUNDEN(A1) das korrekte Ergebnis 0.
Hab ich gemacht, und kann es bestätigen.
Oder was übersehe ich?
Nicht das Du es übersehen hast, aber ein interessantes Phänomen ist mir grad aufgefallen.
Wenn man die Ausgangszahl von Chris nimmt, dann wird sie auch noch so dargestellt, wie eingegeben. Tauscht man jetzt allerdings die 0 vorm Komma mit ner 1, dann wird automatisch auf 1,5 gerundet dargestellt. Also 1,499999999999999 wird nicht mehr angezeigt. Normalerweise hätte ich eigentlich erwartet, dass sich die Nachkommastellen nicht durch den wechsel von 0 auf 1 anders verhalten.
Oder überseh ich jetzt da etwas?


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von Stephan »

Nicht das Du es übersehen hast, aber ein interessantes Phänomen ist mir grad aufgefallen.
Wenn man die Ausgangszahl von Chris nimmt, dann wird sie auch noch so dargestellt, wie eingegeben. Tauscht man jetzt allerdings die 0 vorm Komma mit ner 1, dann wird automatisch auf 1,5 gerundet dargestellt. Also 1,499999999999999 wird nicht mehr angezeigt.


Das ist doch aber nur ein Beispiel für das Verhalten worum hier die ganze Diskussion kreist, die maximale Anzahl von Stellen mit der Calc umgehen kann. Es ist völlig egal wie groß die Zahlen sind, sondern es kommt nur auf die Anzahl der signifikannten Stellen (also alle Ziffern außer 0) an. Wenn Du vorne eine 1 anfügst steigt halt die Anzahl der signifikannten Stellen um eine und das ist eine zuviel und Calc muß runden, wegen der konkreten Zahl wird nun gleich auf ,5 gerundet weil alle Nachkommastellen ja 9 lauten und nicht anders gerundet werden kann. Du mkannst vorne gerne eine 1 anfügen, dann mußt Du halt hinten eine 9 wegnehmen und es wird nicht gerundet weil nicht gerundet werden muß.
(würden die relevanten Ziffern z.B. alle 8 lauten, würde exakt genau das Gleiche passieren, nur führt dann die Rundung dazu das lediglich die letzte Stelle auf 9 lautet, und da dadurch kein Übertrag stattfindet bleiben vorherige Stellen bei 8 und die 4 wird nicht zur 5)

Diese Anzahl signifikanter Stellen kann (solange die Rechnung völlig genau sein soll) eine bestimmte Anzahl nicht überschreiten (15 oder 16, ich schrieb das bereits), da wegen der konkreten Rechenoperationen die Dinge teil günstiger liegen und teils ungünstiger ist die Genauigkeit zusätzlich von der Rechenoperation abhängig.
Normalerweise hätte ich eigentlich erwartet, dass sich die Nachkommastellen nicht durch den wechsel von 0 auf 1 anders verhalten.
Dann hast Du nicht verstanden worum es hier geht, es geht NICHT um Größe von Zahlen oder Ähnliches, sondern nur um maximale Anzahl der darstellbaren Ziffern (1 bis 9) bei der Darstellung von Zahlen.

Die Zahl 0,499999999999999 kann noch gerade dargestellt werden, sie hat 15 signifikante Ziffern (eine 4 und vierzehn 9en), die Zahl 1,499999999999999 kann hingegen nicht mehr dargestellt werden denn sie hat eine signifikannte Ziffer zuviel, also muß gerundet werden, was wegen der Besonderheit der 9en als Nachkommastellen zu 1,50000000000000, was Calc zu 1,5 reduziert.
Völlig analoges Verhalten hätte z.B. die Zahl 1,488888888888888, die auch eine signifikannte Ziffern zuviel hat und gerundet werden muß, was jedoch völlig transparent zu 1,48888888888889 führt, weil die 8 ohne Übertrag auf 9 aufgerundet werden kann.



Gruß
Stephan
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Rechnen mit 15 signifikanten Stellen

Beitrag von balu »

Hallo Stephan,
Es ist völlig egal wie groß die Zahlen sind, sondern es kommt nur auf die Anzahl der signifikannten Stellen (also alle Ziffern außer 0) an. Wenn Du vorne eine 1 anfügst steigt halt die Anzahl der signifikannten Stellen um eine und das ist eine zuviel und Calc muß runden
Ja jetzt hats bei mir auch endgültig klick gemacht.
Ich war so sehr auf das vergleichen der Rundungsergebnisse fixiert (warum Excel anders als Calc), dass ich das andere gar nicht mehr wahrgenommen habe.

Danke Stephan :D
Hab doch etwas wichtiges dazu gelernt.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten