Ver Mensaje Individual
  #14 (permalink)  
Antiguo 18/05/2016, 04:24
Fw190
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Saber si un double se ha desbordado

En doble precisión (64 bits) tendrás 15-16 dígitos de precisión. Si quieres imprimir más, te imprimirá ceros. Si tienes un desbordamiento, lo que ocurra depende del comilador. Por ejemplo, con Mingw 4.8.1 32 bits, me he encontrado con:

1. Si el desbordamiento es comno consecuencia de cálculos, o haciendo atof() a una cadena de caracteres que se corresponda con un número superior a DBL_MAX, te va a dar un resultado de INF (infinito). El programa no te dará error.

2. Si el desbordamiento es consecuencia de hacer un scanf() para un double e introduces un valor superior a DBL_MAX, el resultado será NaN (Not a Number).

Los valores INF y NaN son combinaciones especiales de bits para un número en coma flotante. Si quieres detalles, mírate la norma IEEE 754.

Si quieres evitar el desbordamiento, comprueba si tienes el tipo long double. Este es un tipo de 80 bits que utiliza el coprocesador de manera interna. Ojo, porque algunos compiladores te aceptarán long double como sinónimo de double. Utiliza sizeof, deberá darte 12 ó 16 bytes, dependiendo de si es un sistema de 32 ó de 64 bits, respectivamente. El rango de long double es de 1.xxxE+4932, con unos 20 dígitos de precisión.