Я хочу преобразовать увеличенное значение во времени. до DecimalSeparator это часы после DecimalSeparator являются минутами цифровыхПреобразовать увеличенное значение во Время
8,62944444444444 --> 8:37
1,41666666666667 --> 1:25
Я сделал это Funtion, но я для 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 Но значение, которое я должен преобразовать, выводится из мыльного входа как double (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
Но что это лучший Methode я должен использовать? Roundto -14, потому что 1,41666666666667 - это 14 чисел после разделителя чего-то еще?
Вот где я буду использовать 'TTimeSpan.FromMinutes()'. Здесь я не вижу места для TDateTime. – TLama
@TLama благодарит его за работу с System.TimeSpan.TTimeSpan.FromHours – Ravaut123
@Ravaut Пожалуйста, не отвечайте на вопрос. Я вернулся. –