2011-12-12 57 views
4

根據msdn日期時間精度爲10毫秒。所以t2-t1在下面的例子中的精度也是10毫秒。然而,返回的值是「雙」,令人困惑。如何計算ms中兩個DateTime之間的差異?

DateTime t1 = DateTime.Now; // precision is 10 ms 
.... 
DateTime t2 = DateTime.Now; // precision is 10 ms 
... (t2-t1).TotalMilliseconds; // double (so precision is less than 1 ms???) 

我期待int值,因爲double值在精度爲10 ms時沒有意義。我需要在Thread.Sleep()中使用結果值。我應該只是投到int?

+0

這只是我的好奇心。哪種情況需要變量睡眠? – 2011-12-12 08:24:20

+0

qos - 限制吞吐量 – javapowered

回答

7

DateTime本身的精度低於tick值。

DateTime.Now的粒度通常爲10或15ms--這是系統時鐘的粒度。 (這並不意味着時鐘是準確精確到10或15ms,請注意。)DateTime上的減法運算符不應該知道或關心 - 儘管如此 - 結果只是一個TimeSpan,它的精度仍然是勾號級別。

只要鑄造到int應該是絕對好的。

(您可能需要閱讀本Eric Lippert's blog post,順便說一句。)

相關問題