首先0.3f屬于float資料型別,0.3屬于double資料型別,而float長度為32位,double長度為64位,
在計算機中0.3f與0.3作比較時,需要轉換成二進制數后再開始比較
但是0.3f轉換成二進制是無線回圈的一個值,但是由于精度關系所以會對值進行保留,所以相同的0.3數值會由于float和double精度不同所以精確到的位數不同

通過上圖可以看到0.3f和0.3在精確到一定位數后的結果明顯不同
這里還需要注意一點,0.3f和0.3進行比較運算時,float會先轉換成double資料型別,再與double資料型別的0.3比較
而float資料型別的0.3f 由于舍0入1的關系,導致0.3f的最后一位進1,使得0.3f的值比0.3大,再轉換成double資料型別后依然大于0.3,
所以0.3f != 0.3,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/158272.html
標籤:Java
上一篇:面試官:換人!他連哈希扣的都不懂
