Am 06.04.2010 22:35, schrieb Andreas Griesche:
Hallo zusammen,

ich möchte eine Datenreihe aufbauen und anschliessend im .csv Format 
abspeichern. Dabei ist mir folgendes aufgefallen:
Die Reihe beginnt mit 84,015 und in jeder neuen Zeile werden 0,02 hinzuaddiert. 
Danach kopiere ich die Werte der Zellen eine Spalte nach rechts. Das 
funktioniert richtig bis zur 14. Zahl. Danach der Wert in der Zelle richtig 
angezeigt aber in der Eingabezeile steht eine andere Zahl (Zelle=84,295 / 
Eingabezeile=84,29499999999).
Siehe angehängtes Calc Blatt.

Habe ich irgendwo einen Einstellungsfehler oder verrechnet sich Calc an dieser 
Stelle?

Vor einiger Zeit hatte schon mal jemand dieses Problem und daraus stammt die folgende Erklärung:

Du bist auf ein grundsätzliches Problem mit Rechnen auf dem Computer gestoßen. Computer benutzen intern nicht das Zehnersystem sondern das Zweiersystem. Und so wie im Zehnersystem beispielsweise 1/3 nicht mit einer endlich Dezimalzahl dargestellt werden kann, so kann im Zweiersystem 1/10 und 1/100 nicht mit einer endlichen Zahl dargestellt werden. Da ein Computer aber nur endlich Platz hat, muss die Zahl irgendwo abgeschnitten werden und das gibt dann
beim Rückwandeln in das Zehnersystem Ungenauigkeiten.

Dieses Problem tritt generell auf, nicht nur bei OOo. Im allgemeinen ist OOo auf mindestens 12 Ziffern genau, was für die Grundrechenarten auch problemlos eingehalten wird. Du solltest es nur vermeiden Zahlen voneinander zu subtrahieren, die sich erst in den letzten Dezimalstellen
voneinander unterscheiden.

Was kannst du tun? Da gibt es verschiedene Varianten, je nach Anforderung.

(1) Vermeide Dezimalzahlen. Bei Geldbeträgen heißt das, dass du in Cent rechnest. Bei
ganzen Zahlen gibt es keine Umwandlungsungenauigkeiten.

(2) Runde nach jeder Rechenoperation wieder auf zwei Stellen nach dem Komma.
Dabei musst du von den diversen angebotenen Rundungsmechanismen das
kaufmännische Runden benutzen.

(3) Stelle OOo so um, dass es, wenn es zum Weiterrechnen einen Wert aus einer Zelle holt, nicht den internen Wert nimmt, sondern den Wert benutzt, wie er in der Zelle
angezeigt wird.

(4) Ignoriere, dass deine Zahl irgendwo ab der 12. Dezimalstelle nicht so aussieht wie von Hand gerechnet, du brauchst wahrscheinlich eh nur 2-3 bis Dezimalstellen.


--
Mit freundlichem Gruß
        Rainer Schock

Antwort per Email an