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