pow в C++: возведение в степень с примерами
Всем привет! В данной статье речь пойдет о функции pow
в C++. Данная функция позволяет возвести в степень нужное нам число. Сначала мы рассмотрим pow
из заголовочного файла <cmath>
, после чего сравним ее с другими похожими функциями powf
и powl
. И в конце мы рассмотрим ошибки, которые могут возникнуть при работе с данной функцией.
Как возвести число в степень в C++
Для возведения числа в степень в C++ есть функция pow
. Данная функция доступна при подключении <cmath>
(данный файл также объявляет такие функции как log
, fabs
и exp
).
По своей сути функция pow
эквивалентна следующей формуле: pow(base, exponent) = baseexponent
Данная функция объявлена следующим образом:
double pow (double base, double exponent);
Из данной сигнатуры видно, что:
- первым аргументом функция
pow
принимает основание, которое будем возводить в степень; - вторым аргументом нужно передать степень, в которую нужно возвести основание;
- результат данной функции (основание возведенное в степень) имеет тип
double
.
Теперь давайте попробуем вызвать данную функцию с разными параметрами, чтобы лучше понять, как она работает:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << "pow(2, 3) = " << pow(2, 3) << endl;
cout << "pow(3, 2) = " << pow(3, 2) << endl;
cout << "pow(4, 1) = " << pow(4, 1) << endl;
return 0;
}
Вывод данной программы:
pow(2, 3) = 8
pow(3, 2) = 9
pow(4, 1) = 4
Теперь давайте попробуем передать данной функции вещественные числа, начав с дробного основания:
cout << "pow(1.5, 2) = " << pow(1.5, 2) << endl;
cout << "pow(0.5, 2) = " << pow(0.5, 2) << endl;
Вывод:
pow(1.5, 2) = 2.25
pow(0.5, 2) = 0.25
Как вы видите, pow
позволяет нам работать с дробными основаниями так же, как и с целыми. Теперь давайте попробуем возвести в дробную степень:
cout << "pow(16, 0.3) = " << pow(16, 0.3) << endl;
cout << "pow(16, 0.5) = " << pow(16, 0.5) << endl;
cout << "pow(16, 1.5) = " << pow(16, 1.5) << endl;
cout << "pow(16, 2.5) = " << pow(16, 2.5) << endl;
Вывод:
pow(16, 0.3) = 2.2974
pow(16, 0.5) = 4
pow(16, 1.5) = 64
pow(16, 2.5) = 1024
Как видите, pow
без проблем позволяет нам использовать дробные числа в качестве степени.
Поскольку корень числа эквивалентен возведению в степень
0.5
, мы можем использовать функциюpow
вместоsqrt
. Однако стоит отметить, что функцияsqrt
будет предпочтительнее в данном случае. Подробнее о возведении в степень можете почитать в википедии.
Какой будет результат выполнения следующего кода:
cout << pow(4, 0.5) << ", " << pow(9, 1.5) << endl;
powl: возведение long double в степень
powl
является эквивалентом функции pow
только для чисел типа long double
. В остальном, данная функция работает точно так же: принимает base
и exponent
, а возвращает результат возведения в степень:
long double result = powl(123.456, 789);
cout << "result = " << result << endl;
Вывод:
result = 1.59635e+1650
powf: возведение float в степень
powf
- это еще один аналог функции pow
. powf
работает только с числами типа float
:
float result = powf(123.456, 789);
cout << "result = " << result << endl;
Вывод:
result = inf
Тип float
имеет меньший диапазон значений по сравнению с double
. В данном случае результат возведения в степень оказался слишком большим для float
, поэтому мы видим inf
в результате.
nan при работе с pow, powf, powl
Если основание отрицательно, а степень является дробным числом, то функция pow
вернет nan
:
cout << pow(-4, 0.5); // nan
Однако данное правило не работает если основанием является -INFINITY
. В случае с минус бесконечностью, pow
вернет +INFINITY
:
cout << pow(-INFINITY, 0.5); // inf
Также возможны ошибки при использовании определенных реал изаций функции pow
(зависит от выбранного вами компилятора):
- при возведении 0 в степень 0;
- при возведении 0 в отрицательную степень.
Упражнения
-
Исследование функции
pow
:- Напишите программу на C++, которая использует функцию
pow
для возведения различных оснований и степеней введенных пользователем. - Программа должна показать результат возведения в степень.
- Напишите программу на C++, которая использует функцию
-
Сравнение функций
pow
,powl
иpowf
:- Создайте три программы, каждая из которых использует одну из трех функций (
pow
,powl
илиpowf
) для возведения больших чисел в степень. - Сравните результаты и проанализируйте различия, особенно в случае с
powf
.
- Создайте три программы, каждая из которых использует одну из трех функций (
-
Работа с
nan
иinf
:- Напишите программу, которая демонстрирует результаты, когда функции
pow
,powf
иpowl
возвращаютnan
илиinf
.
- Напишите программу, которая демонстрирует результаты, когда функции
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение