Что такое C++ функция для возведения числа в степень?



Как поднять число до власти?



2^1

2^2

2^3


etc...

4219   15  

15 ответов:

pow () в библиотеке cmath. Подробнее здесь. Не забудьте иметь #include в верхней части.

std::pow на <cmath> заголовок имеет следующие перегрузки:

pow(float, float);
pow(float, int);
pow(double, double); // taken over from C
pow(double, int);
pow(long double, long double);
pow(long double, int);

теперь вы не можете просто сделать

pow(2, N)

С N является int, потому что он не знает, какой из float, double или long double версии он должен принять, и вы получите ошибку неоднозначности. Всем трем потребуется преобразование из int в floating point, и все три одинаково дороги!

поэтому обязательно введите первый аргумент, чтобы он идеально соответствовал одному из этих трех. Я обычно используют double

pow(2.0, N)

опять какая-то адвокатская хрень от меня. Я сам часто попадал в эту ловушку, поэтому хочу предупредить вас об этом.

используйте функцию pow(x,y):Посмотреть Здесь

просто включить математику.h И все готово.

вы должны быть в состоянии использовать обычные методы C в математике.

#include <cmath>

pow(2,3)

Если вы находитесь на Unix-подобной системе, man cmath

ты об этом спрашиваешь?

Sujal

в C++ оператор " ^ " является побитовым или. Это не работает для поднятия к власти. X

во время pow( base, exp ) Это отличное предложение, имейте в виду, что он обычно работает с плавающей точкой.

Это может быть или не быть то, что вы хотите: на некоторых системах простой цикл умножения на аккумуляторе будет быстрее для целых типов.

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

у меня недостаточно репутации, чтобы комментировать, но если вам нравится работать с QT, у них есть своя версия.

    #include <QtCore/qmath.h>
    qPow(x, y); // returns x raised to the y power.

или если вы не используете Qt, cmath имеет в основном то же самое.

    #include <cmath>
    double x = 5, y = 7; //As an example, 5 ^ 7 = 78125
    pow(x, y); //Should return this: 78125
#include <iostream>
#include <conio.h>

using namespace std;

double raiseToPow(double ,int) //raiseToPow variable of type double which takes arguments (double, int)

void main()
{
    double x; //initializing the variable x and i 
    int i;
    cout<<"please enter the number"; 
    cin>>x;
    cout<<"plese enter the integer power that you want this number raised to";
    cin>>i;
    cout<<x<<"raise to power"<<i<<"is equal to"<<raiseToPow(x,i);
}

/ / определение функции raiseToPower

double raiseToPow(double x, int power)
{
    double result;
    int i;
    result =1.0;
    for (i=1, i<=power;i++)
    {
        result = result*x;
    }
    return(result);
}

это pow или powf в <math.h>

нет специального оператора инфикса, как в Visual Basic или Python

pow(2.0,1.0)
pow(2.0,2.0)
pow(2.0,3.0)

ваше оригинальное название вопроса вводит в заблуждение. Чтобы просто площадью используйте 2*2.

обратите внимание, что использование pow (x,y) менее эффективно, чем xxx Y раз, как показано и ответил Здесь https://stackoverflow.com/a/2940800/319728.

Так что если вы собираетесь для эффективности использования xx x.

многие ответы предложили pow() или аналогичные альтернативы или их собственные реализации. Однако, учитывая примеры (2^1,2^2 и 2^3) в вашем вопросе я бы предположил, Нужно ли вам только поднять 2 в целую степень. Если это так, я бы предложил вам использовать 1 << n на 2^n.

int power (int i, int ow) // works only for ow >= 1
{ // but does not require <cmath> library!=)
    if (ow > 1)
    {
         i = i * power (i, ow - 1);
    }
    return i;
}

cout << power(6,7); //you can enter variables here

Я использую библиотеку cmath или math.h чтобы использовать pow() библиотечные функции, которые заботятся о полномочиях

#include<iostream>
#include<cmath>

int main()
{
    double number,power, result;
    cout<<"\nEnter the number to raise to power: ";
    cin>>number;
    cout<<"\nEnter the power to raise to: ";
    cin>>power;

    result = pow(number,power);

    cout<<"\n"<< number <<"^"<< power<<" = "<< result;

    return 0;
}

Если вы хотите иметь дело с base_2 только после этого я рекомендую использовать оператор сдвига влево вместо математическая библиотека.

пример кода :

int exp = 16;
for(int base_2 = 1; base_2 < (1 << exp); (base_2 <<= 1)){
std::cout << base_2 << std::endl;
}

пример вывода :

1   2   4   8   16  32  64  128  256  512  1024  2048  4096  8192  16384  32768

Comments

    Ничего не найдено.