1
A
回答
2
...轉換
time_t
值加倍,然後回來...
在何種情況下,我可能在轉換丟失數據?
在某些情況下,什麼都沒有。 time_t
是一些實數類型。 C11§7.27.13
整數和實數浮點類型統稱爲實數類型。 C11§6.2.517
因此,如果time_t
與double
相同,轉換期望沒有損失。
time_t
通常表示爲32或64位整數。 Typical double
可以精確地對所有53位無符號值(或54位有符號整數值)進行編碼,因此當time_t
是32位整數時,不會發生轉換損失。當time_t
是64位整數時,轉換爲double
開始發生四捨五入,其值在數量級之外。
如果double
值來自原始time_t
,則第二次轉換後退步驟不應發生任何損失,但如果試圖將任意double
更改爲整數,則會產生未定義的行爲。
較不常見,time_t
可能是float
,long double
,long long
等,並且類似的問題適用。
相關問題
- 1. 將時期轉換爲time_t
- 2. 將字符串轉換爲time_t,然後將time_t轉換回字符串
- 3. 將MYSQL時間戳轉換爲time_t
- 4. 將C++ time_t轉換爲Delphi TDateTime
- 5. 將字符串從__DATE__轉換爲time_t
- 6. 將刻度轉換爲time_t或Filetime()
- 7. 字符串轉換爲time_t
- 8. 無法將double轉換爲double [] error
- 9. 如何將Double []轉換爲double []?
- 10. 無法將'double(_cdecl *)()'轉換爲'double'
- 11. 將C++ double轉換爲DEC double
- 12. 如何將SQL_NUMERIC_STRUCT轉換爲double和string?
- 13. 將double轉換爲unsigned char?
- 14. 將double轉換爲float?
- 15. 將Double轉換爲DateTime?
- 16. 將「Double」轉換爲Int
- 17. 將int轉換爲double
- 18. 將double [] []轉換爲float [] []
- 19. mysql將float轉換爲double
- 20. .net將bytearray轉換爲double []
- 21. 將NSNumber轉換爲Double(CLLocationDegrees)
- 22. C++將vector <pair <double,double >>轉換爲double *,double *?
- 23. 轉換time_t的蜱
- 24. 從time_t到const time_t的無效轉換*
- 25. 如何在Scala中將Array [(Double,Double)]轉換爲Array [Double]?
- 26. 本地時間轉換爲time_t(C++)
- 27. 從time_t和tm轉換錯誤的值
- 28. 無法將'double(*)[5]'轉換爲'double'作爲回報
- 29. 將double(0.1)轉換爲BigRational並返回
- 30. 如何將一個double轉換爲NSInteger?
'time_t'的底層類型是什麼?每個標準都沒有說明。 – NathanOliver
可能的重複http://stackoverflow.com/questions/1848700/biggest-integer-that-can-be-stored-in-a-double – Rene