-1

Tengo problemas con esta función en lenguaje C. Al ejecutar un código con esta función de esta forma, se produce un error de cálculo:

#include <stdio.h>
#include <math.h>

int main() {
    int n, potencia;
    printf("Escriba el valor de n: ");
    scanf("%d", &n);

    potencia=pow(n+1,2);
    printf("El valor del calculo es: %d", potencia);

    return 0;
}

Si a 'n' le doy solo y únicamente el valor de '4', el cálculo me sale erróneo. Es decir, si quiero calcular por ejemplo pow(4+1,2), me da como resultado 24, cuando debería ser 25. No me ocurre con ningún otro valor de 'n', pero sí pasa con otros intentos como pow(4+1,3), el cual resulta 124 o pow(4+1,4), el cual me resulta 624. ¿A qué se debe esto?

(Estuve verificando entre programas, y en Visual Studio Code me ocurre este error, mientras que en otros como DevC++ no me pasa).

VLyned
  • 1
  • 1

1 Answers1

2

El problema es que pow() retorna un double y no un int. Es posible que la conversión de double a int esté truncando un 24.9999... a 24 a secas.

Si cambias:

// ...
double potencia;
// ...
printf("El valor es: %f", potencia); // para n=4, potencia: 25.0000
aeportugal
  • 7,106
  • 2
  • 9
  • 21