División de enteros siempre cero [duplicado]

Resuelto Safari asked hace 12 años • 1 respuestas

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 / xsi xes 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/17pero siempre obtengo el mismo valor.. ¿Qué pasa?

Safari avatar Feb 27 '12 00:02 Safari
Aceptado

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 1en la expresión que tiene arriba es inty el tipo de xes int. Cuando lo haces int / int, obtienes un int de vuelta. Necesita que al menos uno de los tipos involucrados sea de punto flotante ( floato 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.

Mike Bailey avatar Feb 26 '2012 17:02 Mike Bailey