Bifalgorithm post · Computer science one · Basic I/O
Why does integer division truncate fractional results in C?
Why does integer division truncate fractional results in C? (Computer science one · Basic I/O) — "10 / 20, the result is not 0.5 as expected. The number 0.5 is…
Ideas in this flowchart
- Conversión de tipos y truncamiento en operaciones numéricas de C
- La división entre enteros trunca la parte fraccionaria del resultado.
- En 10 / 20, el resultado es 0 en lugar de 0.5 porque 0.5 es un número de punto flotante y su parte fraccionaria se descarta.
- Asignar un número de punto flotante a una variable int también trunca la parte fraccionaria.
- En d = b + y, 20 + 3.4 produce 23.4, pero d recibe el valor entero 23.
- Asignar un valor int a una variable double no causa problemas: 2 se convierte implícitamente en 2.0.
- El casteo explícito puede forzar que al menos un operando de una división entera sea de tipo double.
- La expresión x = (double) a / b produce el valor correcto de 0.5.
- El casteo convierte temporalmente a en 10.0 para la división, evitando el truncamiento.
- El operador % calcula el resto de dividir dos números enteros.
- 10 % 5 produce 0.
- 10 % 3 produce 1.
- 29 % 5 produce 4.