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
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.
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.