Помните, что математически есть 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
.