为什么Math.cbrt(a)
提供的结果与Math.pow(a, (1/3))
不同?
public class HelloWorld{
public static void main(String []args){
int a=8;
System.out.println(Math.cbrt(a));
System.out.println(Math.pow(a,(1/3)));
}
}
SOLN
2.0 1.0
为什么会出现差异?我的数学错误或语法错误或与pow有关吗?
答案 0 :(得分:3)
System.out.println(Math.pow(a,(1.0/3.0)));
由于整数运算,1/3将为0,因此您需要转换为double,或者只是使用上面所示的双精度来获得所需的结果。
答案 1 :(得分:1)
在Java 1/3 = 0中,因为您将整数除以整数。如果您使用1 / 3.0,您在Math.pow中的结果就可以了。
答案 2 :(得分:1)
表达式1/3被评估为整数除法,结果为0.然后,pow被称为pow(8, 0)
,正确返回1.尝试改写pow(a, (1.0 / 3.0))
。
答案 3 :(得分:0)
您可以注意的另一件事是,使用cbrt()为您提供表达式的正确值,而使用pow()可以为您提供近似值。您可以尝试使用= 64,125,216或343作为参考。如果您尝试通过类型转换来打印相同的int值,那么这不会为pow()语句提供精确的舍入值,并且在大多数情况下会给出错误的值。 我希望这个答案有助于更好地澄清。