Erlang Central

# Floating Point Rounding

## Problem

You need to round a floating-point number to an integer.

## Solution

Use one of the functions round/1, ceiling/1, floor/1 and trunc/1. Note, the standard Erlang distribution does not come with either floor/1 or ceiling/1, but they can be easily implemented in terms of trunc/1

```floor(X) ->
T = trunc(X),
case X - T < 0 of
true -> T - 1;
false -> T
end.

ceiling(X) ->
T = trunc(X),
case X - T < 0 of
true -> T;
false -> T + 1
end.

1> floor(-4.3).
-5
2> ceiling(-4.3).
-4
3> trunc(-4.3).
-4
4> round(-4.3).
-4
5> floor(3.5).
3
6> ceiling(3.5).
4
7> trunc(3.5).
3
8> round(3.5).
4
9> round(7).
7
```

The procedures all return integers.

round/1 returns the closest integer to x, rounding to even when x is halfway between two integers. floor/1 returns the largest integer not larger than x. ceiling/1 returns the smallest integer not smaller than x. trunc/1 returns the integer closest to x whose absolute value is not larger than the absolute value of x.

Further general information on math and rounding is available from:

MathWorld definition of the Floor Function. MathWorld definition of the Ceiling Function

###### Getting Started
Getting Started with Erlang
Categories
Main page
Recent changes
Random page
Help
View source
Editing help
###### This page

New section
Printable version
Page history
What links here
Related changes