División de enteros siempre cero [duplicado]
Posible duplicado:
división de programación C
Probablemente mi pregunta sea muy simple y estúpida. Me gustaría almacenar el valor de una división, en particular 1 / x
si x
es un valor entero.
int x = 17;
double result = 1/x;
Intento hacerlo pero siempre me sale. 0.000000 ...
Intento ingresar un valor fijo en x, por ejemplo, 1/17
pero siempre obtengo el mismo valor.. ¿Qué pasa?
Estás haciendo una división de números enteros.
Pruebe lo siguiente y funcionará como se esperaba:
int x = 17;
double result = 1.0 / x;
El tipo de 1
en la expresión que tiene arriba es int
y el tipo de x
es int. Cuando lo haces int / int
, obtienes un int de vuelta. Necesita que al menos uno de los tipos involucrados sea de punto flotante ( float
o double
) para que se produzca la división de punto flotante.
A diferencia de Matemáticas, la división en C++ puede referirse a una división de enteros truncados (lo que hiciste) o a una división de punto flotante (lo que hice en mi ejemplo). ¡Cuidado con esto!
En mi ejemplo, explícitamente lo que tenemos es double / int -> double
.