0

我在 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);
    }

谢谢您的帮助。

4

2 回答 2

1

你需要输入 cast doubleto float

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

请查看Narrowing Primitive Conversion

于 2013-07-31T08:54:48.153 回答
1

Math.PI定义为double。由于您要返回 a float,因此必须进行从“任何地方”的转换double-float这可能会降低精度。

编辑:顺便说一句:考虑使用BigDecimal代替doubleor float。如果您使用“BigDecimal”和“float”作为网络搜索的关键字,您会发现很多文章都在讨论这个主题,解释了每种方法的优缺点。

于 2013-07-31T08:56:45.883 回答