(int)Math.pow()返回错误的值



我使用以下方法返回参数x立方的值。

public int cubeNumber(int x)
{
return (int)(Math.pow((double)x, 3.0));
}

41243作为参数传递时,该方法错误地返回

2147483647

而不是

70153726375907

我做错了什么?

这样做。对于大数字,返回值必须是longBigInteger

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)

最新更新