floor, floorf, floorl - largest integral value not greater than argument
Math library (libm
, -lm
)
#include <math.h>
double floor(double x);
float floorf(float x);
long double floorl(long double x);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
These functions return the largest integral value that is not greater
than x
.
For example, floor(0.5)
is 0.0, and floor(-0.5)
is
-1.0.
These functions return the floor of x
.
If x
is integral, +0, -0, NaN, or an infinity, x
itself is returned.
No errors occur. POSIX.1-2001 documents a range error for overflows, but see NOTES.
For an explanation of the terms used in this section, see attributes(7).
Interface | Attribute | Value |
Thread safety | MT-Safe |
C11, POSIX.1-2008.
C99, POSIX.1-2001.
The variant returning double
also conforms to SVr4, 4.3BSD,
C89.
SUSv2 and POSIX.1-2001 contain text about overflow (which might set
errno
to ERANGE, or raise an
FE_OVERFLOW exception). In practice, the result cannot
overflow on any current machine, so this error-handling stuff is just
nonsense. (More precisely, overflow can happen only when the maximum
value of the exponent is smaller than the number of mantissa bits. For
the IEEE-754 standard 32-bit and 64-bit floating-point numbers the
maximum value of the exponent is 127 (respectively, 1023), and the
number of mantissa bits including the implicit bit is 24 (respectively,
53).)