Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/03/2012, 07:49
Fw190
 
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,