C/Visual C - Double en negativo

 
Vista:

Double en negativo

Publicado por David (2 intervenciones) el 04/02/2008 12:42:05
Hola,

Tengo una variable definidad como double, pero al realizar una operación el valor resultante queda negativo, pero en principio un double debería permitir este valor?

double x

x=2747*2747*2747/1000

x=-745949

El resultado es negativo cuando el resultado debería ser 20728886,723
O incluso alguna función para eliminar la parte decimal, ya que el resultado que me interese es la parte entera.

La programación es en C ANSI

Un saludo y gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Double en negativo

Publicado por nayumi orama (53 intervenciones) el 04/02/2008 15:57:57
El problema es que estás desbordando el rango de la variable.
Tu operación debería darte algo así como 20728886,723

pero si multiplicas tres enteros o tres longs, el resultado va a ser un entero o un long y si divides un long entre un long, el resultado será un long.

Tienes que convertir los tipos de los operadores

x =(double)2747*(double)2747*(double)2747/(double)1000;

En teoría, con convertir el primero bastaría, pero mejor asegurarse.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Double en negativo

Publicado por Trebuchetino (28 intervenciones) el 05/02/2008 10:51:28
Bueno, en realidad no es necesario hacer una conversion. Basta con poner un decimal (2747.0) para que lo trate como si fuese de coma flotante:

x = 2747.0*2747.0*2747.0/1000.0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Double en negativo

Publicado por nayumi orama (53 intervenciones) el 05/02/2008 11:27:43
Correcto.

Pero si te acostumbras a hacer las conversiones no te equivocarás al usar variables en vez de constantes (sin entrar en polémica)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Double en negativo

Publicado por fernando.gomez (1603 intervenciones) el 05/02/2008 17:27:59
...además de que corres el riesgo de que te haga la conversión a float en lugar de a double y tu variable se vuelva a desbordar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar