limits.h
specifies limits for non-floating point math types, e.g. INT_MIN
and INT_MAX
. These values are the most negative and most positive values that you can represent using an int.
In float.h
, there are definitions for FLT_MIN
and FLT_MAX
. If you do the following:
NSLog(@"%f %f", FLT_MIN, FLT_MAX);
You get the following output:
FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000
FLT_MAX
is equal to a really large number, as you would expect, but why does FLT_MIN
equal zero instead of a really large negative number?
The '%f' format prints 6 decimal places in fixed format. Since FLT_MIN is a lot smaller, it looks like zero in fixed point. If you use '%e' or '%g' format, you'd get a better formatted answer. Similarly with the FLT_MAX.
It's not actually zero, but it might look like zero if you inspect it using
printf
orNSLog
by using%f
.According to
float.h
(at least in Mac OS X 10.6.2),FLT_MIN
is described as:Note the positive in that sentence:
FLT_MIN
refers to the minimum (normalized) number greater than zero. (There are much smaller non-normalized numbers).If you want the minimum floating point number (including negative numbers), use
-FLT_MAX
.