Question

I wrote the following method in JAVA :

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

when I run the class, I got the following error :

possible loss of precision
required: float; found: double

I saw in the doc that Math.pow needs double to work. What do I have to do if I need to work with float ?

To test, I tried to following method, which is giving the same error :

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

Thank you for your help.

Was it helpful?

Solution

you need to type cast double to float.

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

Please look into Narrowing Primitive Conversion

OTHER TIPS

Math.PI is defined as double. Since you're returning a float, there has to be a conversion from double to float "anywhere" - which is a possible loss of precision.

Edit: BTW: consider using BigDecimal instead of double or float. If you use "BigDecimal" and "float" as keywords for a search in the web, you'll find many articles dealing with this topic explaining the advantages and disadvantages of each approach.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top