你應該看看Floating-Point Types Table (C# Reference)它提供了以下信息
> Type Approximate range Precision
> float ±1.5e−45 to ±3.4e38 7 digits
> double ±5.0e−324 to ±1.7e308 15-16 digits
你的338526801
組合+ 113678
/1000000大約爲16位,並會更適應雙。
其中包含7位浮點可以讓你準確度338526800.000000並沒有更多的
float f = 338526801 + 113678f/1000000
System.Diagnostics.Debug.Print(f.ToString("F6")); // results in 338526800.000000
但是雙獲得15-16位實際上可以將數據存儲到您的精度。
double d = 338526801d + 113678d/1000000
System.Diagnostics.Debug.Print(d.ToString("F6")); // results in 338526801.113678
你也可以看看Timespan
和DateTime
這給你精度100納秒單位。由於有10個刻度在微秒(美國),同樣的時間跨度是:
TimeSpan time = new TimeSpan(3385268011136780);
一位評論建議您可能會嘗試轉換Unix時間。如果是這樣,那麼您可以將Timespan添加到代表1/1/1970的正確DateTime中。
不,你沒有嘗試過這個代碼,因爲它甚至沒有編譯。請發佈您的實際代碼。你的問題也很不明確,請更清楚你想要做什麼,你希望發生什麼,以及發生了什麼。 – tnw
所以使用更加精確的'double'。 – Harrison
使用'DateTime.Seconds'或將'DateTime'轉換爲Ticks。漂浮/雙打本身就是不準確的。如果你想知道爲什麼維基百科確實對IEEE浮點標準有一個很好的解釋。 – evanmcdonnal