java 使用 int、double 和 long 计算幂
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29996070/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Using int, double and long in calculation of powers
提问by SweetMello7
I'm having trouble figuring out when to use int, double and long.
我无法弄清楚何时使用 int、double 和 long。
I'm working on calculating the power of an integer and return the result as long as the power provided is not a negative number.
我正在计算整数的幂并返回结果,只要提供的幂不是负数。
For the assignment, I'm required to use the following code to start:
对于作业,我需要使用以下代码开始:
public static long powerN(int number, int power) {
Here's what I came up with:
这是我想出的:
public class PowerCalculator
{
/**
* Calculate the non-negative power of an integer number. If a negative power is input, the method returns 1.
*
* @param number The number to take power.
* @param power The power factor to be taken to.
* @return The calculation result after taking power of the integer number.
*/
public static long powerN(int number, int power) {
if (power > 0)
{
double result = (Math.pow(number, power));
return result;
}
else
{
return 1;
}
}
}
I know I'm messing up the use of int, double or long but I don't know how to fix it.
我知道我搞砸了 int、double 或 long 的使用,但我不知道如何解决。
采纳答案by nramirez
You could do it by yourself:
你可以自己做:
public static long powerN(
int number,
int power
) {
if(power == 0) return 1;
int result = number;
while(power > 1) {
result*=number;
power--;
}
return (long)result;
}
PS: This does not handle negative powers.
PS:这不处理负面权力。
回答by Julian B.
Wait! If you're doing it yourself, use a faster algorithm like Exponentiation by squaring, something like this:
等待!如果您自己做,请使用更快的算法,例如通过平方取幂,如下所示:
long powerN(long number, int power){
long res = 1;
long sq = number;
while(power > 0){
if(power % 2 == 1){
res *= sq;
}
sq = sq * sq;
power /= 2;
}
return res;
}
回答by Gabriel Cypriano
In case you'd like to use Math.pow
:
如果您想使用Math.pow
:
public static long powerN(int number, int power) {
return (long) Math.pow(number, power);
}
回答by Guest
Option 1: Cast result of Math.pow to long:
选项 1:将 Math.pow 的结果转换为 long:
public class PowerCalculator{
/**
* Calculate the non-negative power of an integer number. If a negative power is input, the method returns 1.
*
* @param number The number to take power.
* @param power The power factor to be taken to.
* @return The calculation result after taking power of the integer number.
*/
public static long powerN(int number, int power) {
// write your code after this line
if (power < 0){
return 1;
} else{
return (long) Math.pow(number, power);
}
Option 2: without using Math.pow
选项 2:不使用 Math.pow
public class PowerCalculator{
/**
* Calculate the non-negative power of an integer number. If a negative power is input, the method returns 1.
*
* @param number The number to take power.
* @param power The power factor to be taken to.
* @return The calculation result after taking power of the integer number.
*/
public static long powerN(int number, int power) {
// write your code after this line
long result = 1;
while (power > 0) {
result *= number;
power--;
}
return result;
}