C/Visual C - Numeros largos en Turbo C 2.01

 
Vista:

Numeros largos en Turbo C 2.01

Publicado por Jose (1 intervención) el 26/04/2002 14:54:13
Estoy probando la serie Fibonacci y me da numeros negativo cuando llega al numero 47 de la serie. Pienso que se desborda el tipo de variable que utilizo, Long INT (%ld).
Puede alguien ayudarme, que hago con esto que es urgente para la Universidad? 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:Numeros largos en Turbo C 2.01

Publicado por Creb (202 intervenciones) el 27/04/2002 00:14:52
Que yo sepa no puedes hacer nada.
En Turbo C se programa para MS-DOS en modo real, y no da para más.
Si quieres conseguir rangos mayores, tendrías que hacerte tú un tipo que lo soportara (por ejemplo guardando dos long), e implementando la suma tú controlando el desborde y todo eso.
Pero es un poco rollo de hacer.
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:Numeros largos en Turbo C 2.01

Publicado por Alexis Leung Cheung (70 intervenciones) el 27/04/2002 03:26:31
No se nada sobre la serie de Fibonacci, pero supongo que puedes utilizar UNSIGNED LONG INT, el cual tiene un rango de:
0 - 4.294.967.295

Si no, tal vez puedas utilizar LONG DOUBLE.

....o espera que salga un compilador compatible al nuevo estándar C99
que tiene el nuevo dato LONG LONG INT.
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:Numeros largos en Turbo C 2.01

Publicado por chuidiang (677 intervenciones) el 27/04/2002 16:13:45
Efectivamente, puedes utilizar un double. Con eso no se te desbodará el número, pero tienes un número determinado de cifras significativas. Es decir, si tienes un número muy largo

123456789

y lo pones como double, llega un momento en que te redondea las últimas cifras

1.2345e8

y se come el 6789 del final. En realidad son bastantes más cifras de las que te pongo aquí, pero no estaría de más que hicieras la prueba para saber exactamente hasta que cifra llega eso.

Si quieres más cifras significativas, no te queda más remedio que hacer lo que te dijeron en un mensaje anterior. Inventarte un tipo (array de enteros) de forma que todos juntos te den la precisión que quieres y hacerte las rutinas de sumas correspondientes.

Recuerdo el lenguaje LISP, que los enteros tenían toda la precisión que hiciera falta.

Se bueno.
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