¿Por qué FLT_MIN es igual a cero?
floating-point numeric-limits (2)
El formato ''% f'' imprime 6 lugares decimales en formato fijo. Como FLT_MIN es mucho más pequeño, parece cero en el punto fijo. Si usa el formato ''% e'' o ''% g'', obtendrá una respuesta mejor formateada. Del mismo modo con FLT_MAX.
#include <float.h>
#include <stdio.h>
int main(void)
{
printf("MIN = %f, MAX = %f/n", FLT_MIN, FLT_MAX);
printf("MIN = %e, MAX = %e/n", FLT_MIN, FLT_MAX);
return(0);
}
MIN = 0.000000, MAX = 340282346638528859811704183484516925440.000000
MIN = 1.175494e-38, MAX = 3.402823e+38
limits.h especifica los límites para los tipos matemáticos de punto no flotante, por ejemplo, INT_MIN e INT_MAX . Estos valores son los valores más negativos y más positivos que puede representar utilizando un int.
En float.h , hay definiciones para FLT_MIN y FLT_MAX . Si haces lo siguiente:
NSLog(@"%f %f", FLT_MIN, FLT_MAX);
Obtienes el siguiente resultado:
FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000
FLT_MAX es igual a un número realmente grande, como era de esperar, pero ¿por qué FLT_MIN igual a cero en lugar de un número negativo realmente grande?
En realidad no es cero, pero podría parecer cero si lo inspecciona con printf o NSLog utilizando %f .
Según float.h (al menos en Mac OS X 10.6.2), FLT_MIN se describe como:
/* Minimum normalized positive floating-point number, b**(emin - 1). */
Observe lo positivo en esa oración: FLT_MIN refiere al número mínimo (normalizado) mayor que cero . (Hay números mucho más pequeños no normalizados).
Si desea el número mínimo de punto flotante (incluidos los números negativos), use -FLT_MAX .