c floating-point numeric-limits

¿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 .