2016-12-20 64 views
1

我正在嘗試Java9功能JShell。我 不能設置浮點值:JShell可能有損地從double轉換爲float

jshell> float b = 3.5 
Error: 
| incompatible types: possible lossy conversion from double to float 
| float b = 3.5; 
jshell> float x =2 
x ==> 2.0 
+3

嘗試'3.5f'分配值並搜索'從double到floaty的有損轉換' –

+3

問題是什麼?請記住,在Java中'3.5'是一個'double'文字。等價的'float'文字是'3.5f'。 –

+0

感謝那工作 – jos

回答

4

它的Java是過分挑剔。

類型的字面3.5double,並且您將其賦值給一個float

由於可能的float s的集合必定是可能的double s集合的子集,因此轉換警告會導致精度丟失。

爲了簡單生活,請使用3.5f來表示float文字。

但請注意,3.5可以同時在一個doublefloat表示準確,所以在這個具體場合,錯誤的是一派胡言。

+1

謝謝@bathsheba – jos

+1

在過去的美好時光中,編譯器會認爲程序員知道他們在做什麼。 – Bathsheba

0

這是Java的行爲(如現有答案中所述)。 JShell完全遵循Java語法和語義 - 這很重要,所以您不會開發不正確的代碼。

相關問題