2013-11-02 20 views
-1

В настоящее время я пытаюсь получить квадратный корень из -1, но в java Math.sqrt() возвращает NaN для любого отрицательного значения. Как получить квадратный корень из -1 в Java?Не могу получить квадратный корень отрицательного числа

+7

Вы не имеете, по крайней мере, классы «Номер» JDK. Найдите библиотеку, которая работает с мнимыми числами. –

ответ

2

Вы не можете получить квадратный корень отрицательного числа. Что вы можете сделать, так это создать класс комплексных чисел с методами для выполнения сложной арифметики чисел. Вы можете посмотреть здесь для примера: http://introcs.cs.princeton.edu/java/97data/Complex.java.html

1

Это метод, который возвращает строковое представление квадратного корня:

static String sqrtImaginaryNum(int i){ 
    String str =""; 
    double sqrtI = Math.sqrt(Math.abs(i)); 
    if(i<0){ 

     return str+=sqrtI+"i"; 
    } 
    return str+=sqrtI; 
} 
0

Как было сказано ранее, не действительные числа отрицательного квадрата корнеплоды. Но есть мнимые числа. Научная библиотека GNU может управлять такими проблемами, например, funcion gsl_complex_sqrt_real. Эта библиотека была создана в C/C++, но вы можете перенести ее в java.

Или вы можете попробовать: http://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/complex/Complex.html

Это очень простой пример использования Apache Commons:

Complex number = new Complex(-4); 
System.out.println("Square root: " + number.sqrt()); 

Результат:

Square root: (0.0, 2.0) 

Смысл 0,0 в реальной части и 2.0 в мнимой части. Или просто -2i и 2i.

0

Я знаю, что это старый вопрос, но у меня есть более простой способ, чтобы следующий человек, пришедший сюда, получал помощь.

if(num<0){ 
    num = -num; 
    ans = Math.pow(num, 0.5); 
    System.out.println("The result is: " + ans + "i"); 
} 

Ввод = -16. Выход = 4i

Смежные вопросы