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
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.
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
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.
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?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
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
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