The floor function, sometimes called the greatest integer function, of a real number x, denoted variously by x[2], floor(x), or int(x)[3][4], is a function that returns the largest integer less than or equal to x. Formally, for all real numbers x,
For example, floor(2.9) = 2, floor(−2) = −2 and floor(−2.3) = −3. For nonnegativex, a more traditional name for floor(x) is the integral part or integral value of x. The function , also written as xmod 1, or {x}, is called the fractional part of x. Every fractionx 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.
The closely-related ceiling function, denoted or ceil(x) or ceiling(x), is the function that returns the smallest integer not less than x, or, formally,
For example, ceiling(2.3) = 3, ceiling(2) = 2 and ceiling(−2.3) = −2.
The names "floor" and "ceiling" and the corresponding notations were introduced by Kenneth E. Iverson in 1962.[5][6]
If x is a real number and n is an integer, one has n ≤ xif and only ifn ≤ floor(x). In the language of order theory, the floor function is a residuated mapping, that is, part of a Galois connection: it is the upper adjoint of the function that embeds the integers into the reals.
Using the floor function, one can produce several explicit (yet impractical) formulas for prime numbers.
For real, non-integer x, the floor function has the Fourier series representation
This operation loses significant data, and can therefore 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 system, 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 may convert to 2.
Many other languages, such as Java (tested with Sun JDK version 1.5.0_05), Perl (as of version 5.8.0), and PHP (tested on version 5.2.1) behave similarly and exhibit rounding errors, as does the POSIX floor() function, every time floating point types are used to store real values.original research?
Because of issues like these, most modern calculators use the decimal numeral system internally, but this only solves a small part of possible problems, and not the fact that (int)((4.0/9.0) * 9.0) will still return 3 instead of 4, even when using decimal floating point representation at any datatype precision (The effective result comes from the truncation of 0.44444...4444 * 9.0 = 3.99999...9996, for which either a binary or decimal internal base has no influence on the precision of the result and the error, even when correct rounding to the nearest representable number is used throughout the calculation).
A workaround is to define an epsilon constant e (e.g. e = 0.00000001), and define floor(x) = (int)(x + e), and ceiling(x) = (int)(x + e) + 1, for x >= 0,
A more elegant solution is to use better numeric datatypes to allow representing rational values exactly, or to avoid aggravating rounding errors which will only appear when non polynomial functions are used in the calculation. For example, a pair can be used for storing a floating point numerator and a positive integer divisor (a solution used in the Calculator accessory in Windows): all intermediate calculation and storage use this datatype, and the decimal floating point value is computed only for the final display of the calculator, with correct rounding up to the displayed precision.
Spreadsheet software
Most spreadsheet programs support some form of a ceiling function. Although the details differ between programs, most implementations support a second parameter—a multiple of which the given number is to be rounded to. As a typical example, ceiling(2, 3) would round 2 up to the nearest multiple of 3, so this would return 3. The definition of what "round up" means, however, differs from program to program.
Microsoft Excel's ceiling function does not follow the mathematical definition, but rather as with (int) operator in C, it is a mixture of the floor and ceiling function: for x ≥ 0 it returns ceiling(x), and for x < 0 it returns floor(x). This has followed through to the Office Open XML file format. For example, CEILING(-4.5) returns -5. A mathematical ceiling function can be emulated in Excel by using the formula "-INT(-value)" (please note that this is not a general rule, as it depends on Excel's INT function, which behaves differently that most programming languages).
The OpenDocument file format, as used by OpenOffice.org and others, follows the mathematical definition of ceiling for its ceiling function, with an optional parameter for Excel compatibility. For example, CEILING(-4.5) returns -4.
Typesetting
The floor and ceiling function are usually typeset with left and right square brackets where the upper (for floor function) or lower (for ceiling function) horizontal bars are missing, and, e.g., in the LaTeX typesetting system these symbols can be specified with the \lfloor, \rfloor, \lceil and \rceil commands in math mode. Unicode contains codepoints for these symbols, at U+2308–U+230B: ⌈x⌉, ⌊x⌋.
^ ,J.W.S. Cassels (1957). An introduction to Diophantine approximation, Cambridge Tracts in Mathematics and Mathematical Physics 45. Cambridge University Press, 1.
^ Michael Sullivan. Precalculus, 8th edition, p. 86