operadores y tipos

25/06/2008 - 01:34 por Fabián | Informe spam
una cosa tan simple me esta demorando,
favor, ayuda,

tengo un problema con el operador de división, en la siguiente fórmula,
me da en todos los casos y pruebas x1 = 0 a pesar de que x2 y x3 tienen
valores asignado.
Si cambio el operador a *, + , - funciona pero con / no.

double x1;
int x2;
int x3;

x1 = (x2 / x3);

que estoy haciendo mal ?

desde ya muchas gracias...

Fabián.
Principiante.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
25/06/2008 - 07:37 | Informe spam
"Fabián" wrote in message
news:
una cosa tan simple me esta demorando,
favor, ayuda,

tengo un problema con el operador de división, en la siguiente fórmula,
me da en todos los casos y pruebas x1 = 0 a pesar de que x2 y x3 tienen
valores asignado.
Si cambio el operador a *, + , - funciona pero con / no.

double x1;
int x2;
int x3;

x1 = (x2 / x3);

que estoy haciendo mal ?



x2 y x3 son enteros. Por lo tanto, al escribir x2/x3 el compilador genera
una división entera, cuyo resultado es siempre un entero. Asi que si x2 es
menor que x3, el resultado es cero. El resultado se lo asignas a x1 que es
un double, por lo que se realiza una conversión implícita de ese cero de int
a double, y sigue siendo cero.

Solución: x1=((double)x2)/x3;
Respuesta Responder a este mensaje
#2 Fabián
26/06/2008 - 15:26 | Informe spam
Sos un maestro.
Muchas Gracias Alberto,
Fabián Alberto H.
Principiante.


"Alberto Poblacion" wrote:

"Fabián" wrote in message
news:
> una cosa tan simple me esta demorando,
> favor, ayuda,
>
> tengo un problema con el operador de división, en la siguiente fórmula,
> me da en todos los casos y pruebas x1 = 0 a pesar de que x2 y x3 tienen
> valores asignado.
> Si cambio el operador a *, + , - funciona pero con / no.
>
> double x1;
> int x2;
> int x3;
>
> x1 = (x2 / x3);
>
> que estoy haciendo mal ?

x2 y x3 son enteros. Por lo tanto, al escribir x2/x3 el compilador genera
una división entera, cuyo resultado es siempre un entero. Asi que si x2 es
menor que x3, el resultado es cero. El resultado se lo asignas a x1 que es
un double, por lo que se realiza una conversión implícita de ese cero de int
a double, y sigue siendo cero.

Solución: x1=((double)x2)/x3;



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida