Как возводить в степень в java

от admin

Как выполнить возведение в степень в Java

Самый простой способ решения поставленной задачи — использовать класс Math. Это то решение, которое вы будете использовать в большинстве случаев.

Класс Math содержит методы, связанные с тригонометрией, геометрией и другими аспектами математики. В нём методы реализованы как статические, поэтому можно сразу вызывать через имя класса Math без создания объекта класса.

Как у нас будет выглядеть возведение в степень:

Нам пришлось использовать приведение типа (int), так как данный метод класса Math возвращает значение типа double (аргументы по идее тоже double, но там используется неявное приведение типа).

А теперь — бонус: дополнительные варианты.

Значение квадрата числа

Начнём, пожалуй, с самого простого.

Вот так пишется метод для возведения в квадрат:

Вот и всё — ничего сложного и лишнего.

Число в степени

Но число в квадрате — далеко не все, что нам понадобится. Чаще всего нам в работе будет нужно число именно в определенной степени, поэтому далее следует немного усложненный вариант, но уже с кастомным java pow значением:

Алгоритм весьма прост: мы как бы задаём точку отсчета result, и далее умножаем его на наше значение value столько раз, сколько отработает цикл с powValue (powValue количество раз)

Следующий способ будет немного более экзотическим, но от этого не менее крутым.

Как выполнить возведение в степень в Java - 4

Рекурсия — это средство, которое позволяет методу вызывать самого себя. В Java такой механизм присутствует, и такие методы, соответственно, называются рекурсивными.

Многие, если не все алгоритмические задачки, можно решать рекурсивно. Данная тоже не будет исключением, поэтому давайте взглянем, как можно возвести число в определенную степень рекурсивным способом:

Как видим, у нас есть два случая:

  1. Условие выхода из рекурсии, или другими словами, когда у нас значение степени достигнет единицы, нас начнёт выбрасывать назад.
  2. Сам механизм умножения value на результат вызова этого же метода, но с powValue — 1.

Ну а теперь пришло время взглянуть на более ленивые способы, а именно — способы “из коробки”.

Главное назначение класса BigInteger состоит в хранении целых чисел произвольной величины, но при этом в нём есть различные арифметические методы, позволяющие вести работу с этими огромными (ну или не очень) числами.

Как выполнить возведение в степень в Java - 5

Подробнее о BigInteger можно почитать вот в этой статье.

Итак, как же будет выглядеть возведение в степень с помощью BigInteger в Java?

Как возводить в степень в Java?

В этой статье мы расскажем о том, как выполнять возведение в степень в языке программирования Java. Читателю будут представлены 5 актуальных способов решения поставленной задачи.

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

Таким образом, речь идет об умножении числа на свое же значение n-е количество раз. Умножаемое число — это основание степени, а количество операций по умножению — показатель. Результат такого перемножения и будет называться возведением в степень. Для числа 3 3 результат будет равен 27, так как 3 х 3 х 3 = 27.

Теперь давайте рассмотрим, как это все реализуется в языке программирования Java.

Math pow

Использование класса Math — наиболее простой вариант решения поставленной задачи. На практике его применяют в большинстве ситуаций. Public class Math включает в себя математические методы, в том числе те, которые связаны с геометрией и тригонометрией. В этом классе методы реализованы в качестве статических, следовательно, есть возможность вызывать их через имя класса Math, не создавая объект класса.

public static int pow(int value, int powValue) <

return (int) Math.pow(value, powValue);

Здесь пришлось использовать операцию приведения типа (int), т. к. этот метод класса Math осуществляет возвращение значения типа double (аргументы, по сути, тоже double , однако там применяется неявное приведение типа).

Теперь рассмотрим несколько дополнительных вариантов решения поставленной задачи.

Значение квадрата числа

Начнем с наиболее простого и напишем метод по возведению в квадрат:

Выполняем вызов в main:

public static void main(String[] args) <

Как видим, возведение в квадрат сложностей не вызывает.

Число в степени

Чаще всего нам приходится работать не с квадратным значением числа, а с числом в определенной степени. Усложним предыдущий вариант и задействуем кастомное Java pow-значение:

public static void main(String[] args) <

public static int pow(int value, int powValue) <

int result = 1;

for (int a = 1; а <= powValue; а++) <

result = result * value;

return result;

Алгоритм несложен: мы как будто задаем точку отсчета result , а потом умножаем его на значение value столько, сколько будет работать цикл с powValue .

Рекурсия

Следующий вариант является уже более экзотичным.

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

На практике рекурсивно можно решать многие алгоритмические задачи. Наша — не исключение. Давайте выполним возведение в степень рекурсивно:

Как видно из реализации, существуют 2 момента:

  1. Условие выхода из рекурсии. Если возведенное значение степени достигает единицы, нас выбрасывает назад.
    1. Непосредственный механизм умножения value на результат вызова того же самого метода, однако с powValue — 1.

    Для совсем ленивых разработчиков существуют способы «из коробки». Рассмотрим один из них.

    BigInteger

    BigInteger — это класс, который обеспечивает хранение целых чисел произвольной величины. Здесь существуют разные арифметические методы, которые позволяют работать с числами.

    Выполняем возведение посредством BigInteger в Java:

    Тут все предельно просто и не нуждается в дополнительных разъяснениях, не так ли? Однако на сегодня все, теперь вы будете знать о разных способах, позволяющих возводить в степень в «Джава».

    По материалам: https://javarush.ru/groups/posts/2828-kak-vihpolnitjh-vozvedenie-v-stepenjh-v-java.

    Интересуют более продвинутые знания по языку программирования Java? Добро пожаловать на курсы в Otus!

    Возведение числа в степень в java

    Хоть и простого экспоненциального оператора Java не существует, вы можете легко вычислить показатель степени, используя несколько различных методов. Использование powerinJava (Math.pow) является наиболее гибким и простым подходом. Вам нужно импортировать класс java.lang.math, прежде чем вычислять показатель степени. Это простая строка кода, а сама функция имеет простой в использовании синтаксис.

    В альтернативных методах используют цикл for или рекурсивный вызов, но они работают только для степеней, больших или равных 1, поэтому вы должны попытаться использовать первый, где это возможно.

    Math.pow на Java

    Ядром метода вычисления показателей в Java является функция math.pow (), которая принимает два значения и вычисляет одно в степени другого. Благодаря этому синтаксису вы сможете возвести любое число в какую-угодно степень. Чтобы сделать результат целым числом используйте (int) перед функцией. Без этого она автоматически возвращает значение «double» и принимает параметры также как «double».

    Вычисление показателя степени

    Процесс вычисления показателя Java в основном включает в себя только использование этой функции. Например, откройте свою Java IDE – Netbeans. Для первой строки кода вы импортируете класс перед выполнением вычисления, поэтому введите «importjava.lang.math;» (без кавычек), прежде чем перейти к вычислению. В следующей строке введите «class» и что-то описательное после пробела, например «CalculatePower <» с открытой скобкой в конце, чтобы подготовиться к оставшейся части кода.

    Затем введите что-то описательное для ответа, например «ans», а затем «= (int) Math.pow(base, exponent)», отметив, что если вы используете двойные значения, введите «(double)» вместо «(int)» после знака равенства.
    Наконец, введите «System.out.println(+ans)» в другой новой строке, а затем выполните команду для вычисления показателя степени.

    Как всегда, вы вводите числа, которые хотите использовать вместо «базы» и «экспоненты».» Поэтому, если вы хотите вычислить 52 как целое число, то ваш код должен сказать:

    Изучаем Java

    Класс Math содержит набор математических функций, часто оказывающихся не­обходимыми при решении разных задач.
    Чтобы извлечь квадратный корень из числа, применяют метод sqrt.
    double х = 4;
    double у = Math.sqrt(х);
    System.out.println(у); // Печатает число 2.0.

    Между методами println и sqrt есть небольшая разница. Метод println дей­ствует на объект System, out, имея второй параметр у — число, подлежащее вы­воду. (Напомним, что out — это объект, определенный в классе System и пред­ставляющий собой стандартное устройство вывода.)

    В то же время метод sqrt в классе Math не работает ни с одним объектом. Он имеет единственный параметр х — число, из которого нужно извлечь корень. Такие методы называются статиче­скими.

    В языке Java нет оператора возведения в степень: для этого нужно использовать метод pow из класса Math.

    Оператор
    double у = Math.pow(x,a) ;
    присваивает переменной у значение переменной х, возведенное в степень а.

    Оба параметра метода pow, а также возвращаемое им значение имеют тип double.

    Класс Math содержит обычные тригонометрические функции:
    Math.sin
    Math.cos
    Math.tan
    Math.atan
    Math.atan2

    Кроме этого, в него включены экспоненциальная и обратная к ней логарифмиче­ская функции (натуральный логарифм):
    Math.exp
    Math.log

    В классе определены также две константы
    Math.PI
    Math.E,
    обозначающие аппроксимации чисел Пи и е.

    Для повышения своей производительности функции в классе Math используют про­граммы из встроенного модуля для вычислений с плавающей точкой.
    Если точность вычислений важнее скорости их выполнения, используйте класс strictMath.
    Он реализует алгоритмы из библиотеки «Freely Distributable Math Library» («Свободно распространяемая библиотека математических функций») fdlibm, гарантирующей идентичность результатов на всех платформах.

    Исходные тексты программ, реали­зующих эти алгоритмы, можно найти на web-странице http://www.netlib.org/fdlibm/index.html. (В библиотеке fdlibm дается несколько определений каждой функции, класс StrictMath следует версии IEEE754, имена функций в которой на­чинаются с буквы «е».)

    Преобразования числовых типов

    Часто возникает необходимость преобразовать один числовой тип в другой.

    На рис. 3.1 показаны разрешенные преобразования.

    Шесть черных стрелок на рис. 3.1 обозначают преобразования, которые выпол­няются без потери информации. Три серые стрелки означают преобразования, при которых может произойти потеря точности. Например, количество цифр в большом целом числе 123456789 превышает количество цифр, которое может быть представ­лено типом float.
    Число, преобразованное в тип float, имеет правильную величи­ну, но несколько меньшую точность.

    int n = 123456789;
    float f = n; // Число n равно 1.23456789268.

    Рис. 3.1 Разрешенные преобразования числовых типов

    Если два значения объединяются бинарным оператором (например n+f, где n — целое число, a f — число с плавающей точкой), то перед выполнением операции оба операнда преобразовываются в числа, имеющие одинаковый тип.

    Если хотя бы один из операндов имеет тип double, то второй тоже преобразо­вывается в число типа double.

    В противном случае, если хотя бы один из операндов имеет тип float, то второй тоже преобразовывается в число типа float.
    В противном случае, если хотя бы один из операндов имеет тип long, то второй тоже преобразовывается в число типа long.
    В противном случае оба операнда преобразовываются в числа типа int.

    Приведение числовых типов

    В предыдущем разделе мы видели, что при необходимости значения типа int ав­томатически преобразовываются в значения типа double. С другой стороны, есть не­сколько очевидных ситуаций, когда число типа double рассматривается как целое. Преобразования чисел в языке Java возможны, однако, разумеется, при этом может происходить потеря информации. Такие преобразования называются приведением типа (cast).

    Синтаксически приведение типа задается парой скобок, внутри которых
    указывается желательный тип, а затем — имя переменной. Например,
    double х = 9.997;
    int nx = (int)x;

    Теперь в результате приведения значения с плавающей точкой к целому типу пере­менная nх равна 9, поскольку при этом дробная часть числа отбрасывается.

    Если нужно округлить число с плавающей точкой до ближайшего целого числа (что во многих случаях является намного более полезным), используется метод
    Math.round.
    double x = 9.997;
    int nx = (int) Math. round (x);

    Теперь переменная nx равна 10. При вызове метода round по-прежнему нужно выполнять приведение поскольку возвращаемое им значение имеет тип long, и присвоить его переменной типа int можно лишь с помощью явного приведения.

    При попытке привести число одного типа к другому результат может выйти за пре­делы допустимого диапазона. В этом случае результат будет усечен.

    Например, вы­ражение (byte) 300 равно 44. Поэтому рекомендуется явно проверять заранее, бу­дет ли результат лежать в допустимом диапазоне после приведения типов.

    Приведение между булевским и целыми типами невозможно. Это предотвращает появление ошибок. В редких случаях для того, чтобы привести булевское значе­ние к числовому типу, можно использовать условное выражение
    b ? 1 : 0.

    Читать:
    Какая сигнатура должна быть у функции теста

Похожие статьи