Nel tentativo di vedere cosa accadrebbe nel caso di un underflow del float, ho scoperto che potevo rendere i numeri float molto più piccoli di FLT_MIN. Sto usando xcode 5.1 su OS 10.9. Il dialetto della lingua è gnu99.è inferiore a FLT_MIN. perché FLT_TRUE_MIN?
#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;
}
Stampe:
Float min è 0.000000 o 1.175494e-38.
L'underflow è 0.000000 o 4.203895e-45
L'intervallo minimo di espansione è -37.
- Esiste un metodo più efficace per dimostrare i limiti dei tipi di dati?
- Perché FLT_MIN non è in realtà il valore float più piccolo? Ci sono altre costanti che dovrei usare? Dopo aver digitato la domanda precedente ho trovato FLT_TRUE_MIN. Qual è il numero?
http://en.wikipedia.org/wiki/Denormal_number –
Scrivilo come risposta, per favore. –
Hai menzionato che il tuo dialetto è "gnu99"; Vorrei attirare la tua attenzione sul fatto che "FLT_TRUE_MIN" è stato introdotto con C11, quindi in modo formale richiederebbe l'uso del dialetto "gnu11". – AntoineL