2013-07-31 52 views
0

可能發生的損失我在JAVA寫了下面的方法:JAVA:精密

public static float surface(float r) 
    { 
     return(4*Math.PI*Math.pow(r,2)); 
    } 
當我運行的類

,我得到了以下錯誤:

possible loss of precision 
required: float; found: double 

我的文檔,看到數學.pow需要double才能工作。如果我需要與float合作,我需要做些什麼?

爲了測試,我嘗試下面的方法,即給予同樣的錯誤:

public static float surface(float r) 
    { 
     return(4*Math.PI*r*r); 
    } 

謝謝您的幫助。

回答

1

Math.PI被定義爲double。由於您要退回float,因此必須將double轉換爲float「任意位置」 - 這可能會導致精度損失。

編輯:BTW:考慮使用BigDecimal而不是doublefloat。如果您在網絡中使用「BigDecimal」和「float」作爲搜索關鍵詞,您會發現許多文章都涉及這個主題,解釋了每種方法的優缺點。