Не в состоянии вычислить значение отрицательной базы в JAVA

В моем приложении для Android я пытаюсь оценить выражение: (-2^(x)), но не могу заставить работать метод Math.pow() из библиотеки JAVA. Я могу оценить (2^(х)), но не другой с отрицательным основанием. Вот посмотрите на журналы. Все значения y возвращаются как NaN.

Для оценки я использую следующие утверждения:

double result = Math.pow(x,exponent);
result = coefficient * result;

Я не знаю, в чем может быть проблема. Возможно, именно так настроена негативная база.

спасибо за любой совет множитель возврата * Math.pow(база, результат);

2 ответа

Предполагая, что вы пытаетесь вычислить (-2) в степень x, где x один из x значения, показанные на картинке: это не работает, если x является целым числом Причина в том, что ответ не является реальным числом. (Например, что такое (-1)^0,5? Это квадратный корень из -1, который iмнимое число, а не действительное число.) x все значения, показанные на изображении, не являются целыми числами (некоторые из них очень близки к целым числам, но все еще нет - в последнем десятичном знаке есть ненулевое значение). Таким образом, результаты все выходят как NaN,

Это явно в Javadoc для Math.pow:

Если первый аргумент конечен и меньше нуля:

если второй аргумент является конечным четным целым числом, результат равен результату возведения абсолютного значения первого аргумента в степень второго аргумента

если второй аргумент является конечным нечетным целым числом, результат равен отрицательному результату возведения абсолютного значения первого аргумента в степень второго аргумента

если второй аргумент конечен и не является целым числом, то результатом является NaN.

Если то, что вы делаете, отличается от (-2)^x, то ваш вопрос сбивает с толку и нуждается в разъяснении.

Отрицательная база с дробным показателем представляет собой комплексное число с вещественной и мнимой частями. Функция Math.pow не оборудована для возврата комплексного числа; двойное возвращаемое значение не может представлять или ссылаться на комплексное значение.

Проблема возникает из-за того, что все языки представляют числа с плавающей запятой. Вы не можете больше представить 0.1 в виде двоичного числа, чем 1/3, используя основание 10.

Другие вопросы по тегам