簡體   English   中英

將int / long零轉換為double

[英]Converting int/long zero to double

考慮此代碼段:

int i = 0;
double d1 = (double) i;
long l = 0L;
double d2 = (double) l;

在我的機器上運行它會為兩次轉換打印0.0 d1d2可以是0.0嗎?

據我了解,這是一個擴展的原始轉換規范說

擴展的原始轉換不會丟失有關數值總體大小的信息。

以及

將int或long值擴展為float,或將long值轉換為double,可能會導致精度損失

據我了解規范,上述意味着int 0將始終變為double 0.0long 0可以轉換為其他東西(例如1E-20或類似的東西)。 我的規范解釋是否正確?

完整的報價是:

將int或long值擴展為float,或將long值轉換為double,可能會導致精度損失 - 也就是說,結果可能會丟失該值的一些最低有效位。 在這種情況下,使用IEEE 754舍入到最接近模式,得到的浮點值將是整數值的正確舍入版本。

(強調我的)

這涵蓋了int / long值無法在float / double精確表示的情況(在這種情況下,選擇最接近的可表示值)。 顯然, 0 可以表示,因此人們不會期望精度損失。

暫無
暫無

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

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