title image


Smiley Re: Zeit auf Stunden abrunden
Hallo,



der "Trick" ist der Operator \, der eine ganzzahlige Division durchführt. Wenn Du auf ganze Stunden abrunden willst, solltest Du das auch angeben:



Public Function ZeitAbrunden(D, Optional Stunden = 1)

Dim Tmp As Double Tmp = (((CDbl(D) * 24#) \ Stunden) * Stunden) / 24#

ZeitAbrunden = CDate(Tmp

End Function



Die 1440 sind die Anzahl der Minuten an einem Tag, also 60*24. 1 Tag ergibt genau einen Wert von 1.



Übrigens, bei dem von Dir geschilderten Fall handelt es sich wohl um einen Rundungsfehler, so genau rechnet Access nicht, selbst bei Double.



Ich habe es gerade mal ausprobiert:

(0.041412037037037 * 1440)= 59,6333333333333

59,6333333333333 \60 =1

aber

59\60=0



So sollte es evtl gehen:



Public Function ZeitAbrunden(D, Optional Stunden = 1)

Dim Tmp As Double Tmp = (CDbl(D) * 24#) \ Stunden) - (CDbl(D) Mod 24)

ZeitAbrunden = CDate(Tmp

End Function



Da wird dann bei \ und mod gleich falsch gerundet.



mfg Rita



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: