AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kalenderwochen Funktion Falsch?

Ein Thema von Eppos · begonnen am 5. Dez 2007 · letzter Beitrag vom 8. Jan 2010
Antwort Antwort
Seite 2 von 3     12 3      
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.063 Beiträge
 
Delphi XE2 Professional
 
#11

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 10:58
Zitat von Daniel G:
Zitat von Amateurprofi:
Nein, das bringt nichts.
Und im selben Posting machst du es dann doch. ;)
Daniel,
lies doch mal etwas genauer, wie ich das Round(...) ersetzt habe.
Ich habe nicht einfach (wie von dir vorgeschlagen) das "Round" durch "Trunc" ersetzt sondern durch Trunc(0.5 + ...).
Du schlugst vor, mit Trunc den Nachkommateil abzuschneiden.
Ich runde ab, wenn der Nachkommaanteil < 0.5 ist und auf, wenn er >= 0.5 ist.
Round würde dann, wenn der Nachkommaanteil = 0.5 ist, auf die nächstgelegene gerade Zahl runden.
Bei dieser Routine wird dieser Fall nicht eintreten, weil bei einer Division eines Integerwertes durch 7 der Nachkommateil nie 0.5 sein kann.
Ich halte es aber für "sauberer", hier nicht Round zu verwenden, damit klar ist was gerechnet werden soll.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#12

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 11:14
Zitat von Amateurprofi:
Du schlugst vor, mit Trunc den Nachkommateil abzuschneiden.
Ja, denn der wird ja nicht gebraucht. Oder? Ich bräucht einen Beweis, welche der beiden Varianten nun richtig ist. Den find ich aber nicht. Bislang bringen beide bei mir dasselbe Ergebnis.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 11:15
Wenn nur dern Datumbereich beachtet werden soll muss man abschneiden als Trunc()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#14

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 11:25
Büdde was?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 11:29
Die Berechnung ist falsch, wenn der TDateTime eine Zeitangabe enthält. Deshalb muss man diese abschneiden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 12:47
Moin moin,

Zitat von Daniel G:
...Ich bräucht einen Beweis, welche der beiden Varianten nun richtig ist...
Ich versuche es mal...

Vom übergebenen Datum interessiert ja nur der Datumteil, also die Stellen vor dem Komma.
Ob ich nun z.B. 40184 durch y teile oder 40184.xxxxx durch y, die Vorkommastellen vom Ergebnis bleiben gleich.
Und da bei ((A +8 -Day) - EncodeDate(Y, 1, 1)) / 7 nur unser übergebenes Datum Nachkommastellen haben könnte,
können wir auch bei dem Ergebnis den Nachkommaanteil ignorieren.

Also reicht es, das Round durch Trunc zu ersetzen, wie du schon im Beitrag #8 geschrieben hast.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#17

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 13:00
Zitat von x000x:
Also reicht es, das Round durch Trunc zu ersetzen, wie du schon im Beitrag #8 geschrieben hast.
Danke. Denn ich kann immer noch nicht nachvollziehen, warum es nun wichtig sein soll, 0.5 dazuzuaddieren.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 13:12
Zitat:
Danke. Smile Denn ich kann immer noch nicht nachvollziehen, warum es nun wichtig sein soll, 0.5 dazuzuaddieren. Grübelnd...
Wäre sogar falsch, denn dann wäre aber Mittag der nächste Tag.
Markus Kinzler
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.063 Beiträge
 
Delphi XE2 Professional
 
#19

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 15:30
Zitat von Daniel G:
Zitat von Amateurprofi:
Du schlugst vor, mit Trunc den Nachkommateil abzuschneiden.
Ja, denn der wird ja nicht gebraucht. Oder? Ich bräucht einen Beweis, welche der beiden Varianten nun richtig ist. Den find ich aber nicht. Bislang bringen beide bei mir dasselbe Ergebnis.
Bei mir nicht.
Beispiele:
01.01.2010 : 52 (Richtig : 53)
02.01.2010 : 52 (Richtig : 53)
03.01.2010 : 52 (Richtig : 53)
Alle Tage des Jahres 2009.

Im Zeitraum 15.10.1582 bis 31.12.2499 bringt ein einfaches Trunc(...) an 144918 (von 335006) Tagen ein falsches Ergebnis. (Zumindest wenn ich bei all dem, was ich gemacht habe nicht völlig gepennt habe)
Der Fehler tritt bei mir auf:
1) An allen Tagen eines Jahres, wenn der 01.01. ein Dienstag, Mittwoch oder Donnerstag ist. (144269 Mal)
2) Am 01.01. und 02.01. eines Jahres, wenn der 01.01. ein Samstag ist und in die 53. Woche des Vorjahres fällt. (60 Mal)
3) Am 01.01., 02.01. und 03.01. eines Jahres, wenn der 01.01. ein Freitag ist. (396 Mal)
4) Am 30.12. und 31.12. eines Jahres, wenn der 30.12. ein Montag ist. (60 Mal)
5) Am 31.12. eines Jahres, wenn er ein Montag ist. (133 Mal)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#20

Re: Kalenderwochen Funktion Falsch?

  Alt 7. Jan 2010, 15:38
Ok, dann nehm ich zurück, was ich gesagt hab. Meine Testfälle waren einfach nicht richtig konstruiert. Wenn es keine größeren Proteste gibt, werde ich das morgen im Laufe des Tages in die Funktion in der CL einarbeiten.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz