# Floor function

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.

Table of contents |

2 The ceiling function 3 The operator (int) in C4 The fractional part |

## Some properties of the floor function

with equality on the left if and only if*x*is an integer. For any integer

*k*and any real number

*x*, we have

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

## The ceiling function

and the following:*k*, we also have the following equality:

- .

*m*and

*n*are coprime positive integers, then

## The operator `(int)` in C

C and related programming languages have a feature called type casting which allows to turn a floating point value into an integer by prefixing it with `(int)`

. This operation is a mixture of the floor and ceiling function: for non-negative *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 system, and it is not possible to represent the numbers 0.6 and 0.3 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.

## The fractional part

If *x* is an irrational number, then the fractional parts *nx* mod 1, where *n* runs through the positive intergers, are extremely evenly distributed in the open interval (0,1). This can be made precise in various ways, one of which states

*f*: [0,1]

`->`

**R**(see limit (mathematics) and integration.)

According to a general principle of diophantine approximation discovered by Hermann Weyl, that property is equivalent to something much easier to check in this case: namely that sums

- Σ
*e*^{2πiknx}

*k*> 0 and taken over ranges

- 0 <
*n*<*N*

*N*). Because these are geometric progressions, that can be proved rather directly. The condition that

*x*be irrational comes out to be that

- sin(π
*kx*) ≠ 0.