¿Cómo dividir 2 int en c?

4 minutos de lectura

avatar de usuario
Alex

quiero dividir 2 números y obtener el resultado así:

5 / 2 = 2,50

Pero solo sale 2.

No sé lo que estoy haciendo mal.

Aquí mi código:

int a;
int b;
int c;
printf("First num\n");
scanf("%d", &a);
printf("Second num\n");
scanf("%d", &b);
c = a / b;
printf("%d", c);

  • 2,50 no es un número entero. No se puede almacenar en un int.

    – PC Ludita

    28 de enero de 2016 a las 19:06

  • int significa “entero”, ya sabes…

    – Eugenio Sh.

    28 de enero de 2016 a las 19:06

  • Aunque el punto flotante es una solución, tal vez quiera leer más sobre fixed point.

    – usuario3528438

    28 de enero de 2016 a las 19:29

avatar de usuario
haris

Tu necesitas un double variable para almacenar el resultado. int almacena solo números enteros. Además, debe encasillar las otras variables también antes de realizar la división.


haz algo como esto

double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);

NOTA:

No necesitas el & en printf() declaraciones.

Para evitar el encasillamiento en float, puede usar directamente scanf con el indicador %f.

float a;
float b;
float c;
printf("First number\n");
scanf("%f", &a);
printf("Second number\n");
scanf("%f", &b);
c = a / b;
printf("%f", c);

avatar de usuario
jaffer wilson

El signo “https://stackoverflow.com/” es para división. Siempre que en lenguaje C, divide un número entero con un número entero y almacena los datos en un número entero, la respuesta como resultado es un número entero. Por ejemplo

int a = 3, b = 2, c = 0;
c = a/b; // That is c = 3/2;
printf("%d", c);

los producción recibido es: 1
La razón es el tipo de variable que ha utilizado, es decir, entero (int)
Siempre que se utilice un número entero para almacenar la salida, el resultado se almacenará como un número entero y no como un valor decimal.

Para almacenar los resultados decimales, el lenguaje C proporciona float, double, long float y long double.

Siempre que realice una operación y desee una salida en decimal, puede usar los tipos de datos mencionados anteriormente para su variable de almacenamiento resultante. Por ejemplo

int a = 3, b = 2;
float c = 0.0;
c = (float)a/b; // That is c = 3/2;
printf("%.1f", c);

los producción recibido: 1.5
Entonces, creo que esto te ayudará a entender el concepto.
Recordar: Cuando está usando float entonces el especificador de acceso es %f. Necesitas convertir tu respuesta en floattal como lo hice, y luego se reflejará la respuesta.

  • @ user3528438 ¿Crees que he copiado la respuesta de allí? Déjame decirte que fue mi propia muestra. Acabo de obtener algunas cifras para respaldar mi respuesta. Y no sé por qué me has dedicado, no he escrito nada malo. Mi respuesta es adecuada.

    –Jaffer Wilson

    28/01/2016 a las 20:27

  • No, copié su código allí para mostrar por qué voté negativo: su respuesta no es correcta (eche un vistazo a la stdouto intente compilar y ejecutar su código usted mismo).

    – usuario3528438

    28/01/2016 a las 20:31

  • @ user3528438 Sí, tenías razón. Ahora he editado mi respuesta. Compruébelo por favor. Espero que esto te satisfaga .. ok. y gracias por demostrarme que estaba equivocado. Aquí también lo he probado: ideone.com/ibwTpu

    –Jaffer Wilson

    28/01/2016 a las 20:43


avatar de usuario
Claudio Cortés

tienes que usar float o double variable, no int (enteros) unos. También tenga en cuenta que una división entre dos números enteros dará como resultado un número entero, mientras que una división entre un float/double y un entero conducirá a un resultado flotante. Eso es porque C promueve implícitamente este entero a float.

Por ejemplo:

5/2 = 2
5/2.0f = 2.5f

Nota la .0festo en realidad significa que estamos dividiendo con un flotador.

avatar de usuario
usuario9598609

En C, solo se muestra un número de tipo int. 5/2 da un número de tipo de coma flotante. Entonces, el compilador lo compila solo con el valor entero.

  • “solo se muestra un número de tipo int”, lo que se muestra es claramente un valor de coma flotante. “5/2 da un número de tipo de punto flotante”, no, ese es el núcleo del problema.

    – Yunnosch

    15 de marzo de 2021 a las 6:23


  • “solo se muestra un número de tipo int”, lo que se muestra es claramente un valor de coma flotante. “5/2 da un número de tipo de punto flotante”, no, ese es el núcleo del problema.

    – Yunnosch

    15 de marzo de 2021 a las 6:23


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad