Why Does Math.pow(x,y) Count as a Double?

前端 未结 3 1509
不思量自难忘°
不思量自难忘° 2020-12-16 16:16

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

3条回答
  •  失恋的感觉
    2020-12-16 16:42

    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);
    

提交回复
热议问题