我使用以下方法返回参数x
立方的值。
public int cubeNumber(int x)
{
return (int)(Math.pow((double)x, 3.0));
}
当41243
作为参数传递时,该方法错误地返回
2147483647
而不是
70153726375907
我做错了什么?
这样做。对于大数字,返回值必须是long
或BigInteger
。
public static long cubeNumber(long x) {
return x*x*x;
}
或者这个
public static long cubeNumber(long x) {
return (long)Math.pow(x,3);
}
或者这个
public static BigInteger cubeNumber(long x) {
return BigInteger.valueOf(x).pow(3);
}
除BigInteger
解决方案外,所有解决方案都有精度限制。
尝试使用数据类型"long",结果太大,数据类型"int"无法处理。它已达到其数据类型的最大值,因此将只返回"int"的最大值查看提供的此链接(http://cs-fundamentals.com/java-programming/java-primitive-data-types.php)