我在Delphi 2010中嘗試了新的記錄類型TTimeSpan,但我鼓勵一個非常奇怪的問題。Delphi 2010中使用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(雙精度)正確實現。
謝謝弗朗索瓦,現在我明白了邏輯。 – stanleyxu2005 2010-05-22 18:23:51