我是Java新手。我正在编写一个小程序来计算一个数字的值,当我遇到一个负数增加到一个小数指数的问题时。不知道如何使用Math.pow()
System.out.println(Math.pow(-8, 1/3f));
输出是NaN,而我期待-2?
我在做什么错?有没有其他办法来计算这样的问题?
任何帮助表示赞赏。
我是Java新手。我正在编写一个小程序来计算一个数字的值,当我遇到一个负数增加到一个小数指数的问题时。不知道如何使用Math.pow()
System.out.println(Math.pow(-8, 1/3f));
输出是NaN,而我期待-2?
我在做什么错?有没有其他办法来计算这样的问题?
任何帮助表示赞赏。
这种情况在documentation中描述。
如果第一个参数是有限且小于零。 < ...> 如果第二个参数是有限的而不是一个整数,那么结果是NaN。
据我所知在Java标准库中没有办法做到这一点,所以你必须手动实现它。
谢谢。我想我必须将两个案例分为正面和负面的基础? –
是的,但无论如何,发现负面基地的权力似乎不是一个微不足道的问题。 – Kuvaldis
这会得到一个复数。因此它给了NaN。阅读[这个问题](http://stackoverflow.com/questions/20250453/why-math-powa-b-is-nan-when-a-is-a-negative-number-and-b-isa-a-非整数) –
我期待(-2)^ 3 = -8,所以答案是-2? –
在这种情况下,它可能会返回一个真实的数字,但是一般情况下'(-n)^(1/m)'的结果空间是一些复数,所以规范说它应该一致只需返回NaN。 – khelwood