我在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);
}
感谢您的帮助。
答案 0 :(得分:1)
您需要输入演员double
到float
。
public static float surface(float r)
{
return (float)(4*Math.PI*Math.pow(r,2));
}
答案 1 :(得分:1)
Math.PI
定义为double
。由于您要返回float
,因此必须从double
转换为float
“任何地方” - 这可能会导致精度下降。
修改:BTW:考虑使用BigDecimal
代替double
或float
。如果您使用“BigDecimal”和“float”作为网络搜索的关键字,您会发现很多文章涉及这个主题,解释了每种方法的优缺点。