delphi - Convert extended value to Time -
i want convert extended value time. before decimalseparator hours after decimalseparator minutes digital
8,62944444444444  --> 8:37 1,41666666666667  --> 1:25   i've made funtion 1,41666666666667 --> 1:24 must 25 minutes
function myconvertion(avalue: extended): tdatetime; var     hour, min, sec, msec: word; begin   hour:= trunc(avalue);   min:= trunc(frac(avalue)*60);   result:= encodetime(hour, min, 0, 0); end;   when use exact 1,41666666666667 i'm 1:25 value must convert comes out soap enterface double (opostcalculationday.directassignedworktime).
the value in debug mode = 1,41666666666667
myconvertion(1,41666666666667) --> 1:25 myconvertion(opostcalculationday.directassignedworktime) --> 1:24 myconvertion(roundto(opostcalculationday.directassignedworktime, -15)) --> 1:25 myconvertion(roundto(opostcalculationday.directassignedworktime, -16)) --> 1:24 myconvertion(strtofloat(floattostr(opostcalculationday.directassignedworktime)))--> 1:25   i'm thinking floating points
but best methode must use? roundto -14 because 1,41666666666667 14 numbers after separator of else?
my assumption values encoded this:
hours + minutes/60    where hours , minutes integers , minutes between 0 , 59 inclusive. 
you need round minutes rather truncate them
min := round(frac(avalue)*60);   if fractional part contains seconds or milli-seconds need different calculation.
secs := round(frac(avalue)*3600);   or
msecs := round(frac(avalue)*3600000);   i don't see point in using extended here. type exists distinct double on x86 , in case slower double due poor alignment, , gives nothing here cannot double.
Comments
Post a Comment