Seite 1 von 1

Datumsangaben ergeben unterschiedliche Summen

Verfasst: Di, 09.11.2010 14:02
von Sterndeuter
Hallo,

ich habe folgendes Problem: Für einen sekundengenauen Zinsrechner muss ich Datumsangaben (TT.MM.JJJJ HH:MM:SS) voneinander subtrahieren und dann mit der Dezimalzahl weiterrechnen. Calc allerdings bekommt, je nachdem, welches Datum ich voneinander abziehe, eine unterschiedliche Zahl raus, auch wenn der Abstand zwischen den Daten der gleiche ist.

Kennt jemand das Phänomen? Ist das normal und wie kann ich es umgehen?

Hoffnungsvolle Grüße,
Daniel

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: Di, 09.11.2010 14:12
von Karolus
Hallo
Wenn du gleiche Datums_Zeitwerte voneinander abziehst bekommst du auch stets die gleiche Differenz.
-Überprüfe mal ob die Eingangswerte tatsächlich gleich sind, z.B. indem du sie als normale Dezimalzahl mit ca. 4 Kommastellen formatiert anzeigen lässt.
Gruß Karo

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: Di, 09.11.2010 22:16
von Sterndeuter
Hallo,

danke für die schnelle Antwort. Ich habe eben nochmal ausprobiert: Die komplette erste Spalte mit TT.MM.JJJJ HH:MM:SS formatiert, die zweite Spalte mit "normal Zahl" (20 Nachkommastellen). In der ersten Spalte vier Felder eingetragen (eckige Klammern jeweils ein Feld): [01.01.1999 12:00:00]; [01.01.1999 12:10:00]; [01.01.1900 14:10:00]; [01.01.1900 14:20:00]. In der zweiten Spalte dann die beiden Paare (erste beiden, letzte beiden) voneinander subtrahiert und hier das Ergebnis:

[0,00694444444525288000] (Ergebnis der Subtraktion der beiden 1999er Daten)
[0,00694444444444464000] (Ergebnis der Subtraktion der beiden 1900er Daten)

Sollte da nicht das gleiche rauskommen? Ich möchte gerne die 10 Minuten (also die vergangene Zeit) als Dezimalzahl haben und so sollte das doch funktionieren, oder?

Gruß,
Daniel

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: Di, 09.11.2010 23:33
von Stephan
Sollte da nicht das gleiche rauskommen?
mathematisch ja, bei einer Tabellenkalkulation ist jedoch die Genauigkeit der Rechnung beschränkt da nur mit einer beschränkten Anzahl signifikannter Stellen gerechnet wird.
Da bei der konkreten Rechnung die Nachkommastellen Zählen (da 1 Tag gleich 1 und 10min 1/24*60) wird die Genauigkeit potentiell um so geringer ausfallen je mehr Stellen vor dem Komma zu berücksichtigen sind, diese Anzahl ist jedoch bei den 1999 größer.

Die Datums-/Zeitwerte entsprechen in Calc folgenden Dezimalzahlen:

01.01.1999 12:00:00 --> 36161,50000000000000000000
01.01.1999 12:10:00 --> 36161,50694444440000000000
01.01.1900 14:10:00 --> 2,59027777777778000000
01.01.1900 14:20:00 --> 2,59722222222222000000

es wird deutlich das die Berechnung hinsichtlich der signifikannten Nachkommastellen nur mit unterschiedlicher Genauigkeit geführt werden kann da folgende Anzahl von Nachkommastellen wiedergegeben werden:

5000000000 (10 Stellen, aber genau)
5069444444 (10 Stellen, aber nicht genau da 10min 0,00694...[Periode] entsprechen)
59027777777778 (14 Stellen, aber nicht genau da wieder 10min periodisch)
59722222222222 (14 Stellen, aber nicht genau, da 2*10min auch periodisch)

insgesamt resultiert daraus das die Rechnung mit den 1900er Werte genauer ausfallen wird.

In allen Fällen wird jedoch mit 15 signifikanten Stellen gerechnet, nämlich:

36161 (5 Stellen) + 10 Stellen = 15 Stellen
36161 (5 Stellen) + 10 Stellen = 15 Stellen
2 (1 Stelle) + 14 Stellen = 15 Stellen
2 (1 Stelle) + 14 Stellen = 15 Stellen

(strenggenommen ist die Rechnung wohl nur auf 14 signifikante Stellen genau, da die letzte Stelle gerundet, also bereits ungenau sein kann)
Ich möchte gerne die 10 Minuten (also die vergangene Zeit) als Dezimalzahl haben und so sollte das doch funktionieren, oder?
Die eigentliche Dezimalzahl für 10min in Calc ist 1/24*60 (da 1 Tag genau 1 entspricht) und diese Zahl ergibt 0,00694...[Periode] ist also nur als Bruch (=1/144) genau zu schreiben, nicht als Dezimalzahl.

Geht es hingegen um die 10 als Wert so ist diese leicht mittels =(<spätere Zeit>-<frühere Zeit>)*1440 auszurechnen, und ist dann für beide Paare exakt gleich 10.



Gruß
Stephan


siehe z.B. auch:
viewtopic.php?f=2&t=26733&p=113564&hili ... it#p113564

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: Mi, 10.11.2010 00:03
von Sterndeuter
Hallo,

eine sehr schöne (und sehr verständliche) Antwort, vielen Dank dafür. Nun taucht allerdings wieder ein "Wunder" auf: Die Werte sind nicht exakt 10... Ich hänge meine Beispieldatei mal an, dabei habe ich die Werte in Sekunden umgerechnet. Die letzte Zeile habe ich eingegeben als: =1/144 die andere Zelle als: =B9*86400. Der hierbei ermittelte Wert ist allerdings exakt 600... Woran liegt das?

Ich denke, ich kann mit dieser ungenauigkeit arbeiten, aber um auf Nummer sicher zu gehen: Wenn Calc in Spalte 2 einen Bruch ausgibt, arbeitet es trotzdem mit dem"ungenauen" Bruch? Gibt es eine Rundungsfunktion, so dass ich genaue Brüche bekomme?

Gruß,
Daniel

EDIT: Die Rundungsfunktion habe ich schon gefunden, aber die wirkt sich wohl nur auf Dezimalzahlen aus?

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: Mi, 10.11.2010 00:48
von Sterndeuter
So, ich habe jetzt den Rundungsbefehl in meinen Rechner eingebaut. Allerdings komme ich nun zu folgendem Ergebnis: Wenn ich einen sekundengenauen Zinsrechner erstelle, der jedesmal, wenn ich meinen Kontostand abfrage, die Zinsen dazuaddiert, so ist es sinnvoll, ständig nach den Zinsen zu fragen, da ich so mehr Geld kriege, als wenn ich nur einmal am Tag frage.

Kann mir das bitte jemand bestätigen? Hier der Text, nach dem ich den Rechner erstellt habe:
Das Gold, das du dort lässt, wird je nach Menge mit zwischen 3% und 1,54% am Tag verzinst. Der Zinssatz ist abhängig davon, wieviel Gold dein Konto auf der Bank enthält. Bis 10000Gold erhältst du 3,00% Zinsen. Bei mehr als 214000Gold liegt der Zinssatz bei 1,54%. Zwischen diesen beiden Grenzen reduziert sich der Zinssatz stufenweise, und zwar so, dass die zu erhaltenden Zinsen linear abnehmen.

* 10000Gold = 3,00%
* 50000Gold = 2,71%
* 100000Gold = 2,36%
* 150000Gold = 2,00%
* 214000Gold = 1,54%

Die Verzinsung erfolgt nicht zu einem festen Zeitpunkt, sondern immer dann, wenn du den Bankier nach deinem Kontostand fragst (es ist also sinnvoll mindestens einmal am Tag die Bank aufzusuchen und den Kontostand zu erfragen). Die Zinsen werden dabei auf die Sekunde genau berechnet. Der obige Satz gilt also für 24 Stunden bzw. für 86400 Sekunden. Basis für die Berechnung ist der Kontostand bei der letzten Ein- oder Auszahlung.

Der maximale Kontostand liegt bei 214748Gold 36Silber 47Kupfer, was dem größten möglichen Wert eines Signed Integers (2^31 - 1) entspricht. Ab diesem Wert erhältst du keine Zinsen mehr, dein Vermögen kann nicht über diesen Wert hinaus anwachsen.
Ich hänge außerdem noch meine Version des Rechners dran, in den beiden rechten Rechnern seht ihr den Unterschied zwischen täglich einmal und täglich zweimal fragen. Stimmt das so? Oder mache ich etwas falsch? PS: Man kann sich sogar überlegen, wann es am sinnvollsten wäre, den Bankier noch einmal zu fragen - nach genau 12 Stunden erhöht sich der Betrag am meisten - jedenfalls nach dieser Konfiguration, falls sie denn stimmen sollte.

Viele Grüße,
Daniel

Re: Datumsangaben ergeben unterschiedliche Summen

Verfasst: So, 14.11.2010 12:12
von Sterndeuter
Danke, die Einwände sind berechtigt. Jedoch habe ich eben mal mit den Verantwortlichen geschrieben, und es ist tatsächlich so, dass jedesmal, wenn man zur Bank geht, der neue Betrag verzinst wird. Das heißt für mich: Die Zinsen werden linear runtergerechnet, sozusagen als Bruchteil eines Tages. Aber sobald ich den Kontostand erfrage wird mit diesem weitergerechnet, es wird also "neu" angefangen.

Dankeschön an alle Helfer.