¿Por qué 5/2 da como resultado ‘2’ incluso cuando uso un flotador? [duplicate]
⏰ 2 minutos de lectura
alex señor
Ingresé el siguiente código (y no tuve problemas de compilación ni nada):
float y = 5/2;
printf("%f\n", y);
La salida fue simplemente: 2.00000
Mis matemáticas no están mal, ¿verdad? ¿O me equivoco con el operador /? Significa dividir, ¿no? ¿Y 5/2 debería ser igual a 2,5?
¡Cualquier ayuda es muy apreciada!
Porque el resultado es float. Pero los operandos y, por lo tanto, la operación en sí misma es un número entero.
– Eugenio Sh.
26 oct 2016 a las 14:09
Pregunta relacionada aquí.
– WhozCraig
26 de octubre de 2016 a las 14:11
R_Kapp
5 es un int y 2 es un int. Por lo tanto, 5/2 utilizará la división de enteros. si reemplazas 5 con 5.0f (o 2 con 2.0f), haciendo uno de los intsa floatobtendrá la división de punto flotante y obtendrá el 2.5 tu esperas. También puede lograr el mismo efecto lanzando explícitamente el numerador o el denominador (por ejemplo, ((float) 5) / 2).
5. o 2. servirá.
– alk
26 oct 2016 a las 14:10
@alk: Me gusta tener los ceros allí; no tienen ningún propósito real, pero con mi vista deteriorada, a menudo pierdo . por sí mismo, pero todavía no me he perdido una .0.
– R_Kapp
26 oct 2016 a las 14:14
Entonces propondría usar .00, ya que lo más probable es que tengas dos ojos. 😉
– alk
26 oct 2016 a las 14:16
@alk ¡Gracias a los dos! 😀
– Alex Señor
26/10/2016 a las 14:35
alca
¿Por qué 5/2 da como resultado ‘2’ incluso cuando uso un flotador?
porque lo haces no “utilizar float“. 5/2 es una división entera. Solo su resultado (2) se convierte implícitamente en un float convertirse en 2. (Cuidado con el punto).
usuario7075607
Debes hacer una conversión tipográfica adecuada.
float y = (float) 5/2
El programa tratará los números como int.
es dividir dos ints y escribiendo esto a float. Por lo tanto, la respuesta es 2.0
Debes escribir cast
¿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
Porque el resultado es
float
. Pero los operandos y, por lo tanto, la operación en sí misma es un número entero.– Eugenio Sh.
26 oct 2016 a las 14:09
Pregunta relacionada aquí.
– WhozCraig
26 de octubre de 2016 a las 14:11