我在 Delphi 2010 中尝试了新的 Record 类型 TTimeSpan。但我鼓励一个非常奇怪的问题。
assert(TTimeSpan.FromMilliseconds(5000).Milliseconds = 5000);
这个断言没有通过。'TTimeSpan.FromMilliseconds(5000).Milliseconds' 的值预计为 5000,但它是 0。
我深入挖掘:
function TTimeSpan.GetMilliseconds: Integer;
begin
Result := Integer((FTicks div TicksPerMillisecond) mod 1000);
end;
FTicks = 50000000
TicksPerMillisecond = 10000
FTick div TicksPerMillisecond = 50000000 div 10000 = 5000
(FTick div TicksPerMillisecond) mod 1000 = 5000 mod 1000 = 0 // I do not understand, why mod 1000
Integer((FTick div TicksPerMillisecond) mod 1000) = Integer(0) = 0
我的代码解释是正确的,不是吗?
更新:GetTotalMilliseconds(双精度)方法已正确实现。