Pregunta ¿Cuál es la función de C ++ para elevar un número a una potencia?


¿Cómo elevo un número a una potencia?

2^1

2^2

2^3

etc ...


73
2018-05-10 19:18


origen


Respuestas:


pow () en la biblioteca cmath. Más información aquí. No te olvides de tener el #include en la parte superior.


99
2018-05-10 19:20



std::pow en el <cmath> el encabezado tiene estas sobrecargas:

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);

Ahora no puedes hacer

pow(2, N)

con N como int, porque no sabe cuál de las versiones doble flotante, doble o larga debería tomar, y obtendría un error de ambigüedad. ¡Los tres necesitarían una conversión de int a floating point, y los tres son igualmente costosos!

Por lo tanto, asegúrese de escribir el primer argumento para que coincida con uno de esos tres perfectamente. Usualmente uso double

pow(2.0, N)

Alguna mierda de abogado de mi otra vez. A menudo he caído en esta trampa yo mismo, así que te lo advertiré.


71
2018-05-10 19:41



Use la función pow (x, y): Mira aquí

Solo incluye math.h y ya estás listo.


13
2018-05-10 19:20



Debería poder usar métodos normales de C en matemáticas.

#include <cmath>

pow(2,3)

si estás en un sistema unix, man cmath

¿Es eso lo que estás preguntando?

Sujal


11
2018-05-10 19:24



En C ++, el operador "^" es un OR a nivel de bits. No funciona para elevar a una potencia. El x << n es un desplazamiento a la izquierda del número binario que es lo mismo que multiplicar x por 2 n número de veces y que solo se puede usar cuando se aumenta 2 a una potencia. La función POW es una función matemática que funcionará genéricamente.


10
2018-05-20 18:33



Mientras pow( base, exp ) es una gran sugerencia, tenga en cuenta que normalmente funciona en coma flotante.

Esto puede o no ser lo que desea: en algunos sistemas, un bucle simple que se multiplica en un acumulador será más rápido para los tipos enteros.

Y específicamente para cuadrados, también puedes multiplicar los números juntos, punto flotante o entero; en realidad no es una disminución en la legibilidad (IMHO) y se evita la sobrecarga de rendimiento de una llamada a función.


9
2018-05-10 19:25



No tengo suficiente reputación para comentar, pero si te gusta trabajar con QT, tienen su propia versión.

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

O si no estás usando QT, cmath tiene básicamente lo mismo.

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

6
2017-10-08 19:58



#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);
}

// definición de la función 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);
}

5
2017-12-02 15:47



Es pow o powf en <math.h>

No hay un operador infijo especial como en Visual Basic o Python


3
2018-05-10 19:21



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

El título original de tu pregunta es engañoso. Para sólo cuadrado, utilizar 2*2.


3
2018-05-10 19:22



Tenga en cuenta que el uso de pow (x, y) es menos eficiente que xXx veces como se muestra y responde aquí https://stackoverflow.com/a/2940800/319728.

Entonces, si vas por la eficiencia usa xXX.


1
2018-04-09 21:59