Как возвести в степень в c
Перейти к содержимому

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

  • автор:

Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции

Функция pow является частью библиотеки cmath, и поэтому её заголовок обязательно должен быть подключен в секции #include, как это сделано в примере. Также cout и cin являются частью библиотеки iostream и она у нас тоже подключена.

Давайте рассмотрим еще несколько примеров:

Пример, в котором степень и число задается пользователем:

Пояснение: возведение «2» в степень «n» реализуется с помощью сдвига, в общем случае:

  • сдвиг влево (в сторону старших разрядов) реализует умножение на два,
  • сдвиг вправо (в сторону младших разрядов) реализует деление на два.

Число n должно быть целочисленным.

Пример, в котором не используется функция pow()

В этом примере пользователь вводит числа n и a . Где n — число, которое возводится в степень, a — степень числа. В цикле for, мы умножаем число n на само себя a раз и в результате получаем степень.

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

Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном определены в файле math.h .

Степерь числа. pow

Функция pow() , определенная в заголовочном файле math.h , возвращает степень числа:

Стоит отметить, что эта функция возвращает число типа double .

Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.

Округление числа. round

Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double :

Квадратный корень. sqrt

Функция sqrt() возвращает квадратный корень числа типа double :

Для получения квадратного корня числа float также есть функция sqrtf() , а для числа типа long double — функция sqrtl()

pow в C++: возведение в степень с примерами

Всем привет! В данной статье речь пойдет о функции pow в C++. Данная функция позволяет возвести в степень нужное нам число. Сначала мы рассмотрим pow из заголовочного файла <cmath> , после чего сравним ее с другими похожими функциями powf и powl . И в конце мы рассмотрим ошибки, которые могут возникнуть при работе с данной функцией.

Иллюстрация функции pow

Как возвести число в степень в C++

Для возведения числа в степень в C++ есть функция pow . Данная функция доступна при подключении <cmath> (данный файл также объявляет такие функции как log , fabs и exp ).

По своей сути функция pow эквивалентна следующей формуле: pow(base, exponent) = base exponent

Данная функция объявлена следующим образом:

Из данной сигнатуры видно, что:

  • первым аргументом функция pow принимает основание, которое будем возводить в степень;
  • вторым аргументом нужно передать степень, в которую нужно возвести основание;
  • результат данной функции (основание возведенное в степень) имеет тип double .

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

Вывод данной программы:

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

Как вы видите, pow позволяет нам работать с дробными основаниями так же, как и с целыми. Теперь давайте попробуем возвести в дробную степень:

Как видите, pow без проблем позволяет нам использовать дробные числа в качестве степени.

Поскольку корень числа эквивалентен возведению в степень 0.5 , мы можем использовать функцию pow вместо sqrt . Однако стоит отметить, что функция sqrt будет предпочтительнее в данном случае. Подробнее о возведении в степень можете почитать в википедии.

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

Функция pow используется для возведения числа в степень. В первом случае, pow(4, 0.5) возводит число 4 в степень 0.5, что эквивалентно квадратному корню из 4, равному 2. Во втором случае, pow(9, 1.5) возводит 9 в степень 1.5. Это эквивалентно 9 1.5 или 9 * sqrt(9), что равно 27.

powl: возведение long double в степень

powl является эквивалентом функции pow только для чисел типа long double . В остальном, данная функция работает точно так же: принимает base и exponent , а возвращает результат возведения в степень:

powf: возведение float в степень

powf — это еще один аналог функции pow . powf работает только с числами типа float :

Тип float имеет меньший диапазон значений по сравнению с double . В данном случае результат возведения в степень оказался слишком большим для float , поэтому мы видим inf в результате.

nan при работе с pow, powf, powl

Если основание отрицательно, а степень является дробным числом, то функция pow вернет nan :

Однако данное правило не работает если основанием является -INFINITY . В случае с минус бесконечностью, pow вернет +INFINITY :

Также возможны ошибки при использовании определенных реализаций функции pow (зависит от выбранного вами компилятора):

pow, powf, powl

If no errors occur, base raised to the power of exponent ( base exponent
) is returned.

If a domain error occurs, an implementation-defined value is returned (NaN where supported).

If a pole error or a range error due to overflow occurs, ±HUGE_VAL , ±HUGE_VALF , or ±HUGE_VALL is returned.

If a range error occurs due to underflow, the correct result (after rounding) is returned.

[edit] Error handling

Errors are reported as specified in math_errhandling.

If base is finite and negative and exponent is finite and non-integer, a domain error occurs and a range error may occur.

If base is zero and exponent is zero, a domain error may occur.

If base is zero and exponent is negative, a domain error or a pole error may occur.

If the implementation supports IEEE floating-point arithmetic (IEC 60559),

  • pow ( + 0 , exponent ) , where exponent is a negative odd integer, returns +∞ and raises FE_DIVBYZERO
  • pow ( — 0 , exponent ) , where exponent is a negative odd integer, returns -∞ and raises FE_DIVBYZERO
  • pow ( ± 0 , exponent ) , where exponent is negative, finite, and is an even integer or a non-integer, returns +∞ and raises FE_DIVBYZERO
  • pow ( ± 0 , — ∞ ) returns +∞ and may raise FE_DIVBYZERO (until C23)
  • pow ( + 0 , exponent ) , where exponent is a positive odd integer, returns +0
  • pow ( — 0 , exponent ) , where exponent is a positive odd integer, returns -0
  • pow ( ± 0 , exponent ) , where exponent is positive non-integer or a positive even integer, returns +0
  • pow ( — 1 , ±∞ ) returns 1
  • pow ( + 1 , exponent ) returns 1 for any exponent , even when exponent is NaN
  • pow ( base, ± 0 ) returns 1 for any base , even when base is NaN
  • pow ( base, exponent ) returns NaN and raises FE_INVALID if base is finite and negative and exponent is finite and non-integer.
  • pow ( base, — ∞ ) returns +∞ for any |base|<1
  • pow ( base, — ∞ ) returns +0 for any |base|>1
  • pow ( base, + ∞ ) returns +0 for any |base|<1
  • pow ( base, + ∞ ) returns +∞ for any |base|>1
  • pow ( — ∞, exponent ) returns -0 if exponent is a negative odd integer
  • pow ( — ∞, exponent ) returns +0 if exponent is a negative non-integer or negative even integer
  • pow ( — ∞, exponent ) returns -∞ if exponent is a positive odd integer
  • pow ( — ∞, exponent ) returns +∞ if exponent is a positive non-integer or positive even integer
  • pow ( + ∞, exponent ) returns +0 for any negative exponent
  • pow ( + ∞, exponent ) returns +∞ for any positive exponent
  • except where specified above, if any argument is NaN, NaN is returned

[edit] Notes

Although pow cannot be used to obtain a root of a negative number, cbrt is provided for the common case where exponent is 1/3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *