Estoy aprendiendo el lenguaje de programación C y, en Xcode 13.x, cuando escribo esto:
float a = 3 / 2; float b = 1 / 3; printf("3 divided by 2 as a float is %f, 1 divided by 3 as a float is %f\n", a, b); La consola grita esto:
3 divided by 2 as a float is 1.000000, 1 divided by 3 as a float is 0.000000
Esperaría que mostrara 1.500000 y 0.333333 , pero ¿por qué no? Estoy seguro de que la solución es obvia y simple, pero la búsqueda básica en Google no ayudó.
Traté de #include float.h pensando que habría ayudado, pero no hubo suerte.
¿Qué me estoy perdiendo ciegamente?
Gracias
Obviamente, está tratando de almacenar el resultado de la división en un float , pero los flotantes también incluyen números enteros. En realidad estás realizando una división de enteros porque, en ambos casos, ambos términos son enteros (no tienen una parte fraccionaria). La división se realiza redondeada (resultado sin parte fraccionaria), y se asigna a su variable.
¿Cómo corregir esto? Intente agregar una parte fraccionaria a al menos uno de los dos números. Por ejemplo:
float a = 3.0/2;Esto debería hacerlo.