我想将扩展值转换为时间。DecimalSeparator 之前是小时,小数分隔符之后是分钟数字
8,62944444444444 --> 8:37
1,41666666666667 --> 1:25
我做了这个功能,但我得到了 1,41666666666667 --> 1:24 它必须是 25 分钟
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;
当我使用精确的 1,41666666666667 时,我得到 1:25 但我必须转换的值来自肥皂输入界面作为双精度(oPostCalculationDay.DirectAssignedWorkTime)。
我在调试模式下得到的值 = 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
我在想类似于浮点数
但是我必须使用的最佳方法是什么?Roundto -14 因为 1,41666666666667 是其他东西分隔符之后的 14 个数字?