2014-02-08 19 views
6

如果我沒有弄錯,「0.5」是十進制數;從而使其成爲浮動價值。但爲什麼Java告訴我,這是一個雙?。返回語句檢測爲java的錯誤,他說:「不兼容的類型:雙重可能有損轉換爲浮動」給定浮點值可能有損於從double到float的轉換?

public float typeDmgMultiplr(String type,String type2){ 
     if(type.equalsIgnoreCase("grass")){ 
      if(type2.equalsIgnoreCase("grass")) 
       return 0.5; 
      else if(type2.equalsIgnoreCase("poison")) 
       return 0.5; 
      else if(type2.equalsIgnoreCase("fire")) 
       return 0.5; 
      else 
       return 2.0; 
     } 
     else if(type.equalsIgnoreCase("fire")){ 
      if(type2.equalsIgnoreCase("grass")) 
       return 2.0; 
      else if(type2.equalsIgnoreCase("poison")) 
       return 1.0; 
      else if(type2.equalsIgnoreCase("fire")) 
       return 0.5; 
      else 
       return 0.5; 
     } 
     else if(type.equalsIgnoreCase("water")){ 
      if(type2.equalsIgnoreCase("grass")) 
       return 0.5; 
      else if(type2.equalsIgnoreCase("poison")) 
       return 1.0; 
      else if(type2.equalsIgnoreCase("fire")) 
       return 2.0; 
      else 
       return 0.5; 
     } 
     else{ 
      if(type2.equalsIgnoreCase("grass")) 
       return 2.0; 
      else if(type2.equalsIgnoreCase("poison")) 
       return 0.5; 
      else if(type2.equalsIgnoreCase("fire")) 
       return 1.0; 
      else 
       return 1.0; 
     } 

    } 
+7

'0.5'默認爲'double'類型。附加一個'f'使其成爲'float' - '0.5f' –

+3

'double'是一個浮點數,它具有* double *精度,'float'是具有* single *精度的浮點數。如果你只寫'0.5',那麼它被解釋爲'double'。要使用'float'類型,你必須把它寫成'0.5f'。 –

+3

除非有很好的理由,否則不要使用「浮動」。大多數時候這只是一個不必要的頭痛。 – user2357112

回答

3

你有兩個選擇。

一個是將您的方法的返回類型更改爲雙倍。

另一種方法是更改​​您返回浮動值的double值,正如許多評論中所述。

public float typeDmgMultiplr(String type,String type2){ 
    if(type.equalsIgnoreCase("grass")){ 
     if(type2.equalsIgnoreCase("grass")) 
      return 0.5f; 
     else if(type2.equalsIgnoreCase("poison")) 
      return 0.5f; 
     else if(type2.equalsIgnoreCase("fire")) 
      return 0.5f; 
     else 
      return 2.0f; 
    } 
    else if(type.equalsIgnoreCase("fire")){ 
     if(type2.equalsIgnoreCase("grass")) 
      return 2.0f; 
     else if(type2.equalsIgnoreCase("poison")) 
      return 1.0f; 
     else if(type2.equalsIgnoreCase("fire")) 
      return 0.5f; 
     else 
      return 0.5f; 
    } 
    else if(type.equalsIgnoreCase("water")){ 
     if(type2.equalsIgnoreCase("grass")) 
      return 0.5f; 
     else if(type2.equalsIgnoreCase("poison")) 
      return 1.0f; 
     else if(type2.equalsIgnoreCase("fire")) 
      return 2.0f; 
     else 
      return 0.5f; 
    } 
    else{ 
     if(type2.equalsIgnoreCase("grass")) 
      return 2.0f; 
     else if(type2.equalsIgnoreCase("poison")) 
      return 0.5f; 
     else if(type2.equalsIgnoreCase("fire")) 
      return 1.0f; 
     else 
      return 1.0f; 
    } 

} 
相關問題