Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Quitar exponentes del double en C++

Estas en el tema de Quitar exponentes del double en C++ en el foro de C/C++ en Foros del Web. Hola, actualmente estoy trabajando un programa con numeros bastantes grandes usando el tipo de dato DOUBLE en C++, el problema es que hay datos que ...
  #1 (permalink)  
Antiguo 04/03/2012, 22:46
 
Fecha de Ingreso: agosto-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Quitar exponentes del double en C++

Hola, actualmente estoy trabajando un programa con numeros bastantes grandes usando el tipo de dato DOUBLE en C++, el problema es que hay datos que me los expresa como 9.33262e+157 lo que es igual a 9.33262x10^157 pero yo necesito que me imprima el dato sin el exponente, es decir, con los otros 157 datos.

Inicialmente pense en importar las librerias del Bigint pero me doy cuenta que por motivos de requerimientos externos no puedo usar mas clases
  #2 (permalink)  
Antiguo 05/03/2012, 07:49
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Quitar exponentes del double en C++

El tipo de datos double (64 bits) tiene una precisión de unos 16 dígitos, por lo que, si quieres todas las cifras decimales, a partir de ahí vas a tener todo ceros. Por ejemplo, puedes especificar:

printf("%1.20e\n", x);

te imprimirá x en formato exponencial con 20 cifras decimales (no sé cuanto sería el máximo que admite, no lo he probado), pero, como ya te dije, a partir de la 16 (aprox.) ya vas a ver todo ceros.

Existe un tipo llamado qfloat, con 384 bits (sí, has leído bien), esto correspondería a unos 100 dígitos de precisión. Un compilador que dispone de este tipo es el LCC-Win, hay versiones de 32 y 64 bits, aunque este no es C++, sino C (aunque admite algunas de las características de C++). El entorno de desarrollo que trae es un tanto pobre, pero más que suficiente si te limitas a aplicaciones en modo consola, compila rápido y ocupa poco espacio. No sé si es posible obtener librerías para este tipo en otros compiladores, o si hay otros compiladores que lo tengan.

Saludos,

Etiquetas: double, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:29.