[英]JAVA : possible loss of precision
我在JAVA中編寫了以下方法:
public static float surface(float r)
{
return(4*Math.PI*Math.pow(r,2));
}
當我運行該類時,我收到以下錯誤:
possible loss of precision
required: float; found: double
我在文檔中看到Math.pow需要double
才能工作。 如果我需要使用float
我該怎么辦?
為了測試,我嘗試了以下方法,它給出了同樣的錯誤:
public static float surface(float r)
{
return(4*Math.PI*r*r);
}
謝謝您的幫助。
你需要輸入cast double
來float
。
public static float surface(float r)
{
return (float)(4*Math.PI*Math.pow(r,2));
}
Math.PI
被定義為double
。 因為你要返回一個float
,所以必須在“任何地方”從double
轉換為float
- 這可能會導致精度損失。
編輯:BTW:考慮使用BigDecimal
而不是double
或float
。 如果您使用“BigDecimal”和“float”作為網絡搜索的關鍵字,您會發現許多涉及此主題的文章解釋了每種方法的優缺點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.