| • Science | • People | • Locations | • Timeline |
In mathematics, the floor function is the function defined as follows: for a real number x, floor(x) is the largest integer less than or equal to x. For example, floor(2.9) = 2, floor(-2) = -2 and floor(-2.3) = -3. The floor function is also denoted by [x] or . A more traditional name for it is the integral part of x. The function x−[x], also written as x mod 1, is called the fractional part of x. Every fraction x ≥ 0 can be written as a mixed number, the sum of an integer and a proper fraction. The floor function and fractional part functions extend this decomposition to all real values.
We always have
with equality on the left if and only if x is an integer. For any integer k and any real number x, we have
The ordinary rounding of the number x to the nearest integer can be expressed as floor(x + 0.5).
The floor function is not continuous, but it is upper semi-continuous.
If x is a real number and n is an integer, we have n ≤ x if and only if n ≤ floor(x). In fancy language: the floor function is part of a Galois connection; it is the upper adjoint of the function which embeds the integers into the reals.
Using the floor function, one can produce several explicit (yet impractical) formulas for prime numbers. See the article on prime numbers for a number of examples.
A closely related mathematical function is the ceiling function, which is defined as follows: for any given real number x, ceiling(x) is the smallest integer no less than x. For example, ceiling(2.3) = 3, ceiling(2) = 2 and ceiling(-2.3) = -2. The ceiling function is also denoted by . It is easy to show the following:
and the following:
For any integer k, we also have the following equality:
If m and n are coprime positive integers, then
(int). This operation is a mixture of the floor and ceiling function: for positive or 0 x it returns floor(x), and for negative x it returns ceiling(x).
Like the floor and ceiling function, this operation is not continuous, which can magnify rounding errors with disastrous consequences. For instance, (int)(0.6/0.2) will return 2 in most implementations of C, even though 0.6/0.2 = 3. The reason is that computers work internally with the binary numeral systemThe binary or base-two numeral system is a system for representing numbers in which a radix of two is used; that is, each digit in a binary numeral may have either of two different values. Typically, the symbols 0 and 1 are used to represent binary number, and it is not possible to represent the numbers 0.6 and 0.2 by a finite binary string. So some rounding errors occur, and the result is computed as 2.999999999999999555910790149937 which the (int) operator will happily convert to 2. The POSIX floor() function has similar problems. Because of issues like these, most modern calculators use the decimal numeral system internally.