立方根的负数

我试图找到一个负数的立方根,但我得到一个NaN。 有帮助吗?

System.out.println(Math.pow(-8, 1.0 / 3.0)); 

Math.pow的Java文档说明:

如果第一个参数是有限的并且小于零[…] [和]如果第二个参数是有限的而不是整数,则结果是NaN。

您可以使用Math.cbrt来获取多维数据集根目录:

 double result = Math.cbrt(-8.0); 

请记住,在数学上,有3个立方根。 假设你想要真正的根,你应该这样做:

 x = 8; // Your value if (x > 0) System.out.println(Math.pow(x, 1.0 / 3.0)); else System.out.println(-Math.pow(-x, 1.0 / 3.0)); 

编辑:正如其他答案所提到的,有Math.cbrt(x) 。 (我不知道存在)

pow返回具有负基和非积分功率的NaN的原因在于通常通过复平面中的角度大小来完成供电。

  • 对于正实数,角度为零,因此答案仍然是正的和真实的。
  • 对于负实数,角度为180度,(在乘以非整数幂之后)将始终产生复数 – 因此为NaN

来自http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html :

如果第一个参数是有限的且小于零

  • 如果第二个参数是有限偶数,则结果等于将第一个参数的绝对值提高到第二个参数的幂的结果
  • 如果第二个参数是有限的奇数,则结果等于将第一个参数的绝对值提高到第二个参数的幂的结果的负数
  • 如果第二个参数是有限的而不是整数,则结果为NaN。