Rundungsfehler (?) bei Zeitberechnungen

Microsoft revolutioniert nun auch die Zeitrechnung. Mach eine Tabelle nach folgender Anleitung:

A1:9:10
B1:9:11
C1:=(B1-A1)*1440
D1:=C1=20

In Worten: berechne in C1 die Differenz zwischen den Uhrzeiten in A1 und B1 (in Minuten, Umrechnungsfaktor ist 1440), und schau in D1 nach ob das zufällig 20 Minuten sind.

In D1 müsste nun „FALSCH“ stehen, weil C1 nicht 20, sondern 1 ist. Applaus brandet auf, Excel kann halbwegs einfach die Differenz zwischen zwei Uhrzeiten berechnen (wenn man den Umrechnungsfaktor 1440 ergoogelt hat)!

Nun gehen wir in die Vollen, und setzen B1 auf 9:30 (=9:10 + 20 Minuten). C1 wird 20, und D1 zeigt „Wahr“. Der Jubel wird frenetisch, die Teenies in der 1. Reihe fallen in Ohnmacht, es funktioniert!

Nun ändern wird die Zeiten in A1=9:30 und B1=9:50. C1 wird wieder 20, und in D1 steht … „FALSCH“. Es wird totenstill im Saal, und diejenigen die nicht auf Open Office Calc umsteigen wollen oder dürfen (wo das getesteter Weise richtig funktioniert) lassen sich irgendeine Erklärung einfallen, die Erde zeige in der Früh zur Sonne und drehe sich dadurch ganz leicht schneller was auf Grund relativistischer Effekte dazu führt, dass die Zeitdifferenz zwischen 9:30 und 9:50 nicht mehr 20, sondern 19,99999999999 Minuten beträgt.

Eher IT Affine tippen auf Rundungsfehler, hervorgerufen durch die Angewohnheit Excels, Datums- und Zeitwerte intern als Gleitkommazahlen zu behandeln.

Abgesehen davon driftet Excel auch ins Nirvana ab, wenn A1 größer ist als B1, negative Zeitspannen sind also auch so seine Sache nicht.

Wie kann man, ganz ohne relativistische Effekte fürchten zu müssen, in Excel mit Zeitdifferenzen rechnen?

Thx

Armin.

Grüezi Nimral

Eher IT Affine tippen auf Rundungsfehler, hervorgerufen durch
die Angewohnheit Excels, Datums- und Zeitwerte intern als
Gleitkommazahlen zu behandeln.

Das hat nichts mir IT-Affinität zu tun sondern wirklich mit der Gleitkommaberechnung, die in der Nähe von 0 deutlicher zutage tritt.

Abgesehen davon driftet Excel auch ins Nirvana ab, wenn A1
größer ist als B1, negative Zeitspannen sind also auch so
seine Sache nicht.

Nö, berechnen kann Excel die problemlos bloss nicht so einfach darstellen.

Wie kann man, ganz ohne relativistische Effekte fürchten zu
müssen, in Excel mit Zeitdifferenzen rechnen?

Ganz einfach, wie immer bei Gleitkommaberechnungen, entsprechend runden:

C1: =RUNDEN((B1-A1)*1440;6)

Hier noch ein paar Links zum Thema Gleitkommaberechnung und dem Umgang damit:

http://support.microsoft.com/default.aspx?scid=kb;de…
http://support.microsoft.com/?id=196652
http://www.kmkorn.de/artikel/fp/fp.htm
http://de.wikipedia.org/wiki/Gleitkommazahl
http://de.wikipedia.org/wiki/IEEE_754

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Armin,

A1:9:10
B1:9:11
C1:=(B1-A1)*1440
D1:=C1=20

In Worten: berechne in C1 die Differenz zwischen den Uhrzeiten
in A1 und B1 (in Minuten, Umrechnungsfaktor ist 1440), und
schau in D1 nach ob das zufällig 20 Minuten sind.

? zwischen A1 ubd B1 ist eine Minute Unterschied, wieso sollte da 20
rauskommen?

In D1 müsste nun „FALSCH“ stehen, weil C1 nicht 20, sondern 1
ist.

Und steht es nicht da?

Applaus brandet auf

Aha, wo haste denn die Claqueure her, von facebook zufällig
ausgewählt? *griens*

(wenn man den Umrechnungsfaktor 1440 ergoogelt hat)!

Sicher, guckeln ist eine Möglichkeit, könntest dich aber auch
bei Interesse an Excel mit dessen internen Umgang mit
Datum/Zeitwerten beschäftigen dann wüßtest du warum der
Faktor in dem Fall 1440 ist.

Nun gehen wir in die Vollen, und setzen B1 auf 9:30 (=9:10 +
20 Minuten).

Falsch, in B1 steht 9:11, du addierst also nur 19 Minuten.

C1 wird 20, und D1 zeigt „Wahr“.

So sollte es sein.

Der Jubel wird :frenetisch, die Teenies in der 1. Reihe fallen in

Ohnmacht, es funktioniert!

Kein Akt, sind die vom Komasaufen her gewöhnt (m) oder eine Boysgroup
aufspielt (w) *gg*

Nun ändern wird die Zeiten in A1=9:30 und B1=9:50. C1 wird
wieder 20, und in D1 steht … „FALSCH“.

*Schulterzuck* Sowas geschieht wenn man dezimal in Gleitkomma und
zurück wandelt. Wenn man eine dezimale Zahl, gar Kommazahl, digital speichert.
Calc kann nicht hexen, es hat das gleiche Problem.

Es wird totenstill im Saal

Das wird’s immer wenn die Sanitäter kommen um die
ohnmächtigen/Verletzten rauszutragen.

, und diejenigen die nicht auf Open Office Calc umsteigen

wollen oder dürfen (wo das getesteter Weise richtig
funktioniert) lassen sich irgendeine Erklärung einfallen,

Warum nicht, lieber eine STARKE Behauptung als einen schwachen Beweis *gg*

Erde zeige in der Früh zur Sonne und drehe sich dadurch ganz
leicht schneller was auf Grund relativistischer Effekte dazu
führt, dass die Zeitdifferenz zwischen 9:30 und 9:50 nicht
mehr 20, sondern 19,99999999999 Minuten beträgt.

Na und, das regelt Format.

Abgesehen davon driftet Excel auch ins Nirvana ab, wenn A1
größer ist als B1, negative Zeitspannen sind also auch so
seine Sache nicht.

Wie Thomas es sagte, rechnen kann Excel damit, zeigt halt einen
Lattenzaun an.

Wie kann man, ganz ohne relativistische Effekte fürchten zu
müssen, in Excel mit Zeitdifferenzen rechnen?

K.A. was du genau willst. Anstatt zu schreiben
=C1=D1
könntest du auch schreiben
=C1-D1

Hier noch ein paar Links zum Thema Gleitkommaberechnung und
dem Umgang damit:

Freund,

danke für die Links, aber Du hast das Grundproblem nicht verstanden, auch weil ich es nicht beschrieben habe.

Ich habe gar keine Lust, mich mit Gleitkommaberechnungen herumzuschlagen. Ich habe in der Tabelle ja auch nirgendwo welche eingegeben, und auch gar keine gebraucht.

Ich wollte ursprünglich lediglich wissen, ob der Unterschied zwischen zwei Zeitwerten genau 20 Minuten ist oder nicht. Und eigentlich wollte ich nicht einmal das wissen. Ich habe eine Mittelwertberechnung über zeitlich verstreut erfasste Messwerte gemacht, die in einem bestimmten Zeitintervall (Uhrzeit +/- 10 Minuten) liegen, und bei einigen Zeiten, z.B. 9:40 (Messwerte zwischen 9:30 und 9:50), händisch nachgerechnet, falsche Zahlen herausbekommen, währen die Filterung bei Messwerten um 9:20 (9:10 und 9:30) gestimmt hat.

Die Aufgabe da oben war das Endergebnis der Ursachenforschung, und auch der Ausgangspunkt für die Frage: es kann doch wohl nicht ernsthaft keine standardmäßige Möglichkeit in Excel geben, bei der Berechnung von 9:50 - 9:30 genau 20 komma null Minuten heraus zu bekommen.

Armin.

Hallo

> Wie kann man, ganz ohne relativistische Effekte fürchten zu müssen, in Excel mit Zeitdifferenzen rechnen? … mehr auf

Mit Bedacht. z.B. wenn man folgende Formel in C1 verwendet.

=WERT(TEXT((B1-A1)*1440;"@"))

Gruß

Ich bin nicht ganz Deiner Meinung, lieber Reinhard.

*Schulterzuck* Sowas geschieht wenn man dezimal in Gleitkomma
und
zurück wandelt. Wenn man eine dezimale Zahl, gar Kommazahl,
digital speichert.

Sowas passiert Microsoft, wenn sie (und so weiter). Ich wollte eine Zeitdifferenz haben. Wenn Microsoft der Meinung ist, Datums und Zeitwerte als Gleitkommazahlen speichern zu müssen ist das deren Problem und nicht meins. Ich fürchte aber, die eigentliche Ursache des Problems liegt tiefer.

Mach folgenden Versuch (Excel 2010), und Du musst es wirklich tun, sonst schickst Du mir so wie der andere Kollege auch, irgendwelche irrelevanten Abhandlungen über Gleitkommazahlen:

9:00 9:20 =(B1-A1)*1440 =C1=20
9:01 9:21 =(B2-A2)*1440 =C2=20
9:02 9:22 =(B3-A3)*1440 =C3=20

… und dann ziehst Du eine Datenreihe auf bis Zeile 151 (11:30).

Die Spalten C und D sehen dann so aus:

20 WAHR
20 FALSCH
20 FALSCH

20 FALSCH

Der 20 Minuten Treffer kommt nur ein Mal vor, und zwar in der ersten Zeile um 9:00. Wie bitte? So ein Zufall? Selbst die Teenies auf den Tragen werden nachdenklich und nehmen einen tiefen Zug aus der Sauerstoffflasche, und ich verstehe die Welt gar nicht mehr, weil das Verhalten nun absolut nicht zu dem passt was meine realen Datentabellen gemacht haben, die waren nämlich öfter mal WAHR oder FALSCH.

Und nun der Hammer, das ist da wo man den Teenies hinterher die Kotzkübel bringen muss: wir bauen daneben eine weitere Datenreihe nach dem selben Schema, und beginnen die Datenreihe um 8:00

8:00 8:20 =(G1-F1)*1440 =H1=20
8:01 8:21 =(G2-F2)*1440 =H2=20

ziehen sie wieder runter und sehen

8:00 8:20 20 FALSCH
8:01 8:21 20 FALSCH

Na ja, hat eben eine Messung um 8:00 den Rundungsfehler gegen sich. Nun schaust Du in Zeile 61. Da steht der Messwert für 9:00 bis 9:20

9:00 9:20 20 FALSCH

Vergleiche die Reihen. Your Call. Mit „Rundungsfehler“ wollen wir mal lieber nicht argumentieren.

Calc kann nicht hexen, es hat das gleiche Problem.

Ob man dazu hexen können muss kann ich nicht beurteilen, aber eigenhändig getestet mit Open Office 3.3: Verhalten ist tadellos wie erwartet. 20 Minuten Check liefert immer korrekt WAHR. Schluss: entweder sind die OpenOffice Entwickler Hexer, oder die Microsofties Schlamper. Deine Wahl, was Du für die wahrscheinlichere Variante hältst.

, und diejenigen die nicht auf Open Office Calc umsteigen

wollen oder dürfen (wo das getesteter Weise richtig
funktioniert) lassen sich irgendeine Erklärung einfallen,

Warum nicht, lieber eine STARKE Behauptung als einen schwachen
Beweis *gg*

Oh, ich halte meinen Beweis für ziemlich stark :smile: Wenn Du keine Lust hast, den Versuch selber aufzubauen, PM an mich mit einer EMail Addresse, ich schicke Dir sowohl die Tabelle als auch die Screenshots was Excel macht und was Office Calc macht.

Erde zeige in der Früh zur Sonne und drehe sich dadurch ganz
leicht schneller was auf Grund relativistischer Effekte dazu
führt, dass die Zeitdifferenz zwischen 9:30 und 9:50 nicht
mehr 20, sondern 19,99999999999 Minuten beträgt.

Na und, das regelt Format.

Nicht, wenn man das Ganze in einem Filter anwendet. der dadurch Messwerte unterschlägt und dann falsche Ergebnisse liefert aus der dann irgendwer falsche Schlüsse zieht und ein Atomkraftwerk wo hin baut wo keins hin dürfte.

Abgesehen davon driftet Excel auch ins Nirvana ab, wenn A1
größer ist als B1, negative Zeitspannen sind also auch so
seine Sache nicht.

Wie Thomas es sagte, rechnen kann Excel damit, zeigt halt
einen
Lattenzaun an.

Paar Gabbionen mehr hätten Fukushima vielleicht gerettet, ein Gartenzaun sicher nicht.

Wie kann man, ganz ohne relativistische Effekte fürchten zu
müssen, in Excel mit Zeitdifferenzen rechnen?

K.A. was du genau willst. Anstatt zu schreiben
=C1=D1
könntest du auch schreiben
=C1-D1

Hallo

> Wie kann man, ganz ohne relativistische Effekte fürchten zu
müssen, in Excel mit Zeitdifferenzen rechnen? … mehr auf

Mit Bedacht. z.B. wenn man folgende Formel in C1 verwendet.

=WERT(TEXT((B1-A1)*1440;"@"))

Hallo Namenloser,

so hässlich dieser WOrkaround auch ist, er funktioniert.

Vielen Dank!

Armin.

Oh, ich halte meinen Beweis für ziemlich stark :smile: Wenn Du
keine Lust hast, den Versuch selber aufzubauen, PM an mich mit
einer EMail Addresse, ich schicke Dir sowohl die Tabelle als
auch die Screenshots was Excel macht und was Office Calc
macht.

Hallo Armin,

danke, brauchst mir da keine Bildchen zu schicken, ich bau das schon
selbst nach. Dann können wir weiterreden.

Gruß
Reinhard

Hi,

ich bin nun wahrlich kein Crack und zudem schon seit einigen Jahren nicht mehr so tief in Excel drin. Als ich das aber war, hatte ich mir angewöhnt, bei kritische Zeitberechnungen (z.B. wenn Arbeits- oder sonstige Zeiten in Cash bezahlt werden), grundsätzlich

Stunden und Minuten getrennt voneinander zu erfassen und zu verarbeiten.

Das hat Vorteile:

  • bei der Erfassung ist kein Trennzeichen mehr erforderlich;
  • da nur Ganzzahlen erfaßt werden, kann auch mit negativen Zeiten gerechnet werden.

Nachteil: der Aufbau der Tabellenblätter ist aufwendiger.
Die Berechnung geschieht in ausgeblendeten Zellen mit der gebotenen Rundungsfunktion. Nur zur Anzeige werden die Zeiten wieder zusammengebastelt - meist als Text, da intern nicht mit der Bastelei weitergerechnet wird.

Logisch erscheint mir dieser Ansatz auch, weil die kleinste Einheit bei der Erfassung Minuten sind (so wie die kleinste Einheit bei Auszahlungsbeträgen Cent sind). Weil nur mit Ganzzahlen (meistens kleiner 60) gerechnet wird, springen Rundungsfehler direkt ins Auge.
Passend erscheint mir der Ansatz auch deshalb, weil der Mensch (jedenfalls ich) auch so kopfrechnet.

Wenn sich dazu jemand äußern mag, würde ich mich freuen.

Gruß

Markus

Grüezi Armin

Mach folgenden Versuch (Excel 2010), und Du musst es wirklich
tun, sonst schickst Du mir so wie der andere Kollege auch,
irgendwelche irrelevanten Abhandlungen über Gleitkommazahlen:

9:00 9:20 =(B1-A1)*1440 =C1=20
9:01 9:21 =(B2-A2)*1440 =C2=20
9:02 9:22 =(B3-A3)*1440 =C3=20

… und dann ziehst Du eine Datenreihe auf bis Zeile 151
(11:30).

Die Spalten C und D sehen dann so aus:

20 WAHR
20 FALSCH
20 FALSCH

20 FALSCH

Der 20 Minuten Treffer kommt nur ein Mal vor, und zwar in der
ersten Zeile um 9:00. Wie bitte? So ein Zufall?

Nein, sondern Gleitkomma-Berchung - die gesanten Links solltest Du dir fairerhalber schon noch ansehen…

Vergleiche die Reihen. Your Call. Mit „Rundungsfehler“ wollen
wir mal lieber nicht argumentieren.

Ursache für die Unstimmigkeit ist/war das ‚ziehen‘ der Werte um die Datenreihen aufzubauen, da hat die Gleitkomma-Berechnung zugeschlagen.

Baue mal die Reihen wie folgt auf, dann passt der Vergleich anschliessend auch:

Tabellenblatt: [Mappe1]!Tabelle1
 │ F │ G │ H │ I │
──┼───────┼───────┼────┼──────┤
1 │ 09:00 │ 09:20 │ 20 │ WAHR │
──┼───────┼───────┼────┼──────┤
2 │ 09:01 │ 09:21 │ 20 │ WAHR │
──┴───────┴───────┴────┴──────┘
Benutzte Formeln:
F2: =F1+ZEIT(0;1;0)
G2: =G1+ZEIT(0;1;0)

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hi Markus,

Wenn sich dazu jemand äußern mag, würde ich mich freuen.

Das Rundungsproblem ist mir durchaus geläufig, darum geht es nicht.

Ich ärgere mich aus einem ganz anderen Grund. Die Microsofties waren - im Unterschied zu den Entwicklern von Office Calc - offenbar nicht in der Lage, diesen durch die (von ihnen selbst gewählte) interne Darstellung von Zeitwerten verursachte Problematik ordentlich zu kompensieren.

Das gilt auch dann, wenn man sie angemessen berücksichtigt:

A B C D
9:10 9:30 =(B1-A1)*1440 =C1=20

Ergibt wie jeder selber probieren kann mit 9:10 und 9:30 „WAHR“, und mit 9:30 und 9:50 „FALSCH“. Da könnte man zur Not noch damit argumentieren, dass der Übergang von den (mit Ungenauigkeit behafteten) Zeitzahlen in B1 und A1 in die Welt der realen Zahlen eben mit einer einfachen Multiplikation nicht zu machen ist, weil man dann Äpfel mit Birnen multipliziert. Denkfehler. Microsoft preist ja gerade diese Möglichkeit als ein tolles Feature an, und es wäre ein Leichtes für sie gewesen, wenigstens die Berechnung als unzulässig zu verhindern, so wie sie den Versuch, einen Text „Armin“ mit einer Zahl zu multiplizieren, mit einem #Wert Fehler abfangen.

Das haben sie nicht getan, sie trauen sich das zu, und folglich muss man auch prüfen dürfen, ob das Ergebnis das ist was herauszukommen hat.

Völlig absurd wird die Rundungs-Argumentation nämlich, wenn man den Versuch umstellt, und nicht einmal mehr multipliziert.

A B C
9:10 9:30 =(B1-A1)=Zeit(0;20;0)

Jetzt wird nur noch verglichen: ist das, was bei der Berechnung der Zeitdifferenz herauskommt, gleich dem was herauskommt, wenn man Excel 20 Minuten in seine eigenes internes Format umrechnen lässt.

Bei 9:10 und 9:30 ja, bei 9:30 und 9:50 nein.

So schaut es aus, wenn man als Entwickler große Ambitionen hat (mit Zeitwerten rechnen können wollen), es aber handwerklich nicht gebacken bekommt. OpenOffice Calc beweist, dass das Problem durchaus lösbar ist.

Was Du vorschlägst, ist die manuelle Kompensation dieses Versagens, indem man die Excels Möglichkeit einfach gar nicht verwendet.

Das hätte ich natürlich machen können, so wie Du das vorschlägst, oder das Ergebnis runden auf ganze Zahl (der gemachte Vorschlag, das Ergebnis in einen Text zu schreiben und dann wieder zurück in eine Zahl zu wandeln macht im Grunde auch nichts anderes), oder nicht auf genau „20“ abfragen, sondern darauf ob das was rauskommt in der Nähe von 20 liegt (ABS(Ergebnis - 20)

Hi Thomas,

ich wollte Dir nicht zu nahe treten, und ich habe die Links durchaus überflogen, aber sie gehen am Kern vorbei.

Dass das Verhalten von nicht kompensierten Rundungsfehlern verursacht wird war immer klar (siehe Titel des OP), nur sehe ich nicht ein, dass mir zugemutet wird, dieses Verhalten durch Eigenaufwand zu kompensieren.

Siehe Antwort an Markus Köln. In kurz:

A B C
9:10 9:30 =(B1-A1)=Zeit(0;20;0)

zeigt, auf den Punkt gebracht, wo das Problem herkommt: mit diesen Zahlen kommt „WAHR“ heraus, nimmst Du 9:30 und 9:50, kommt FALSCH heraus, die Excel Entwickler haben den Rundungsfehler, den sie durch die von ihnen selbst gewählte Zahlendarstellung verursachen, nicht kompensiert.

Aus dem selben Grund schlägt auch das Aufziehen von Datenreihen mit Uhrzeiten fehl. Ich habs inzwischen auch bemerkt, übertippt man die von der aufgezogenen Datenreihe errechneten Wert für 9:30 manuell mit nochmals 9:30, ändert die Abfrage ihre Meinung von „FALSCH“ auf „WAHR“.

Die OpenOffice Entwickler haben in diesem Punkt offenbar ihre Hausaufgaben gemacht.

Armin.

[MOD] Worum geht es hier - es wird Off Topic!
Grüezi Armin

Das Rundungsproblem ist mir durchaus geläufig, darum geht es
nicht.

Worum geht es dir denn dann, muss ich mich da inzwischen Fragen?

Du kennst das Problem, Du kennst die Ursache und Du kennst die Möglichkeiten damit umzugehen. Auch Alternativen zum Ziehen von Zeitwerten, die das genannte Problem nicht aufweisen hast Du erhalten.

Wenn ich das hier lese…

Ich ärgere mich aus einem ganz anderen Grund. Die Microsofties
waren - im Unterschied zu den Entwicklern von Office Calc -
offenbar nicht in der Lage, diesen durch die (von ihnen selbst
gewählte) interne Darstellung von Zeitwerten verursachte
Problematik ordentlich zu kompensieren.

…dann drängt sich mir der Gedanke auf, dass es dir nicht darum geht, dein Problem zu lösen, sondern deinem Ärger über Microsoft Luft zu machen.

Dafür ist dieses Forum der falsche Ort.
Wir versuchen Anwendern bei ihren Problemen mit Tabellenkalkulationen zu helfen, sind aber weder eine Aussenstelle von Microsoft (dafür gibt es Feedback-Seiten) noch ein Gefäss um jemandes Unmut über bestimmte Dinge oder Verhaltensweisen von Software zu verbreiten.

Ich bitte dich daher, von weiteren Unmutsbezeugungen Abstand zu nehmen und behalte mir eine Rezension oder Löschung von solchen Beiträgen vor.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -
2 Like

Hallo Armin,

Ich bin nicht ganz Deiner Meinung, lieber Reinhard.

noch, lese erstma weiter :smile:

*Schulterzuck* Sowas geschieht wenn man dezimal in Gleitkomma
und ::zurück wandelt. Wenn man eine dezimale Zahl, gar Kommazahl,
digital speichert.

Sowas passiert Microsoft, wenn sie (und so weiter)

ES passiert allen die das so machen auch DEINEM Calc!

Mach folgenden Versuch (Excel 2010),

Habe ich gemacht und die Versuchsandordnung leicht abgewandelt.

Ob man dazu hexen können muss kann ich nicht beurteilen, aber
eigenhändig getestet mit Open Office 3.3: Verhalten ist
tadellos wie erwartet. 20 Minuten Check liefert immer korrekt
WAHR.

So, dann bau biite dieses mal nach in Calc (ich habe Calc 3)
http://www.pic-upload.de/view-17764631/kwnimralFalsc…
Von wegen bei Calc käme kein „Falsch“.

Auch in Clac wird wie in Excel mit 15 signifikanten Stellen
gearbeitet.
Erkennen kannste die 15 in diesem Bild:
http://www.pic-upload.de/view-17764675/kwnimral15.jp…
Die 20 betreffen m.E. nur die Anzeige.

Gruß
Reinhard