Не в состоянии вычислить значение отрицательной базы в 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.