我在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(双精度)正确实现.