簡體   English   中英

將time_t轉換為double並返回

[英]Converting time_t to double and back

我想將time_t值轉換為double ,然后返回: doubletime_t

在什么情況下轉換時可能會丟失數據?

...將time_t值轉換為兩倍,然后返回...
在什么情況下轉換時可能會丟失數據?

在某些情況下,什么都沒有。 time_t是某種實型 C11§7.27.13
整數和實數浮點類型統稱為實數類型 C11§6.2.517

因此,如果time_tdouble相同,則轉換不會造成任何損失。

time_t通常表示為32或64位整數。 典型的double可以完全編碼所有53位無符號值(或54位有符號整數值),因此,如果time_t是32位整數,則不會發生轉換損失。 如果time_t是64位整數,則轉換為double值時將開始舍入取整,其大小在2 53之外。

如果double值來自原始time_t ,則第二次轉換后退步驟絕不會發生任何損失,但是如果嘗試將任意double值更改為整數,則可能會導致未定義的行為。

不太常見的time_t可以是floatlong doublelong long等,並且適用類似的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM