【发布时间】:2015-06-06 01:35:20
【问题描述】:
我想将扩展值转换为时间。 在 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
我在想类似于Floating points
但是我必须使用的最佳方法是什么?舍入 -14,因为 1,41666666666667 是其他分隔符后的 14 个数字?
【问题讨论】:
-
这就是我要使用
TTimeSpan.FromMinutes()的地方。我在这里看不到TDateTime的位置。 -
@TLama 感谢它与 System.TimeSpan.TTimeSpan.FromHours 一起使用
-
@Ravaut 请不要回答问题。我恢复了。
标签: delphi floating-point extended-precision