I\'m writing a Java program to calculate how much food it will take to get a monster to a certain level in My Singing Monsters. When I run the program, it says, \"cannot con
Math.pow return double and you assigning double value to int this is why it is giving error. You have to downcast it. Like
int levelMeal = (int)5*(Math.pow(2,level-1));
I think there's typically hardware support on most modern processors for doing floating-point powers, but not integers. Because of that, for a general power, it's actually faster to do Math.power
with a double
and then convert it back to an int
.
However, in this case there's a faster way to do it for ints. Since you're doing a power of 2, you can just use the bitwise left-shift operator instead:
int levelMeal = 5*(1<<(level-1));
As Rhymoid pointed out in his comment, that expression can be further simplified to remove the 1
:
int levelMeal = 5<<(level-1);
You'll have to do this:
int levelMeal = (int) (5*(Math.pow(2,level-1)));
^
this is a cast
As you can see in the documentation, Math.pow()
returns a double
by design, but if you need an int
then an explicit cast must be performed.