簡體   English   中英

Java:不兼容的類型,從雙精度到浮點的可能有損轉換

[英]Java: incompatible types, possible lossy conversion from double to float

當我嘗試編譯以下代碼時,為什么會收到此錯誤消息?

float a = 1/0.1;
System.out.println(a);

或者

float b = 1/0.002;
System.out.println(b);

不兼容的類型:從 double 到 float 的可能有損轉換

我有溢出嗎? 我希望了解這背后的理論。 提前致謝。

使用浮點文字:

float a = 1f / 0.1f;

0.10.002double文字。 Java 的double類型比float類型具有更高的精度。 因此,當您從double轉換為float時,可以通過將其四舍五入到float中可表示的最接近的值來更改數字。 使用十進制作為類比,將四位數字.1234 分配給兩位數字類型將產生一個不同的數字,0.12。

當您通過分配給float變量隱式執行此轉換時,編譯器會告訴您可能會丟失信息。 通過使用強制轉換,您可以告訴編譯器轉換為不太精確的格式是有意的。 或者通過使用諸如0.1f0.002f類的float文字,您可以在整個過程中使用float值並避免轉換。

通常,選擇一種類型, float型或double精度型,並在整個計算中使用它,用於文字和變量。

暫無
暫無

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

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