[英]Converting time_t to double and back
我想將time_t
值轉換為double
,然后返回: double
為time_t
。
在什么情況下轉換時可能會丟失數據?
...將
time_t
值轉換為兩倍,然后返回...
在什么情況下轉換時可能會丟失數據?
在某些情況下,什么都沒有。 time_t
是某種實型 。 C11§7.27.13
整數和實數浮點類型統稱為實數類型 。 C11§6.2.517
因此,如果time_t
與double
相同,則轉換不會造成任何損失。
time_t
通常表示為32或64位整數。 典型的double
可以完全編碼所有53位無符號值(或54位有符號整數值),因此,如果time_t
是32位整數,則不會發生轉換損失。 如果time_t
是64位整數,則轉換為double
值時將開始舍入取整,其大小在2 53之外。
如果double
值來自原始time_t
,則第二次轉換后退步驟絕不會發生任何損失,但是如果嘗試將任意double
值更改為整數,則可能會導致未定義的行為。
不太常見的time_t
可以是float
, long double
, long long
等,並且適用類似的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.