2016-02-10 41 views
2

我是Java新手。我正在编写一个小程序来计算一个数字的值,当我遇到一个负数增加到一个小数指数的问题时。不知道如何使用Math.pow()

System.out.println(Math.pow(-8, 1/3f)); 

输出是NaN,而我期待-2?

我在做什么错?有没有其他办法来计算这样的问题?

任何帮助表示赞赏。

+0

这会得到一个复数。因此它给了NaN。阅读[这个问题](http://stackoverflow.com/questions/20250453/why-math-powa-b-is-nan-when-a-is-a-negative-number-and-b-isa-a-非整数) –

+0

我期待(-2)^ 3 = -8,所以答案是-2? –

+1

在这种情况下,它可能会返回一个真实的数字,但是一般情况下'(-n)^(1/m)'的结果空间是一些复数,所以规范说它应该一致只需返回NaN。 – khelwood

回答

2

这种情况在documentation中描述。

如果第一个参数是有限且小于零。 < ...> 如果第二个参数是有限的而不是一个整数,那么结果是NaN。

据我所知在Java标准库中没有办法做到这一点,所以你必须手动实现它。

+0

谢谢。我想我必须将两个案例分为正面和负面的基础? –

+1

是的,但无论如何,发现负面基地的权力似乎不是一个微不足道的问题。 – Kuvaldis