flota más pequeño que FLT_MIN. ¿Por qué FLT_TRUE_MIN?

En un intento por ver qué sucedería en el caso de un flujo inferior flotante, descubrí que podía hacer que los números flotantes fueran mucho más pequeños que FLT_MIN. Estoy usando xcode 5.1 en OS 10.9. El dialecto del idioma es gnu99.

#include <stdio.h>
#include <stdlib.h>
#include <float.h>

int main(int argc, const char * argv[])
{
    float underflow = FLT_MIN * 0.0000004;

    printf("Float min is %f or %e.\nUnderflow is %f or %e\nMin float exp is %d.\n", FLT_MIN, FLT_MIN, underflow, underflow, FLT_MIN_10_EXP);

    return 0;
}

Huellas dactilares:
La flotación mínima es 0.000000 o 1.175494e-38.
El flujo inferior es 0.000000 o 4.203895e-45
La flotación mínima es -37.

¿Existe un método más efectivo para demostrar los límites de los tipos de datos?¿Por qué FLT_MIN no es realmente el valor flotante más pequeño? ¿Hay otras constantes que se supone que debo usar? Después de escribir la pregunta anterior, encontré FLT_TRUE_MIN. ¿Cual es este numero?

Respuestas a la pregunta(3)

Su respuesta a la pregunta