Erlang Central

Difference between revisions of "Floating Point Rounding"

From ErlangCentral Wiki

(these BIFs don't need erlang: ; change the tests a bit; remove bogus scheme reference to inexactness; remove redundant 'see also'; minor language)
m
Line 56:Line 56:
  
 
[[Category:CookBook]][[Category:NumberRecipes]]
 
[[Category:CookBook]][[Category:NumberRecipes]]
 +
 +
 +
 +
[http://www.casino-web-gambling.com/blackjack-tips/blackjack-hints.html blackjack hints]
 +
[http://www.gambling-online-theory.com/online-casino/online-casino-for-cash.html online casino for cash]
 +
[http://www.casino-games-wiki.com/index.php/casino_games_online casino games online]
 +
[http://www.casino-theory.com/online-casino-bonus/free-online-casino-tournament.html free online casino tournament]
 +
[http://www.casino-theory.com/online-casino-bonus/free-online-casino-tournament.html free online casino tournament]
 +
[http://www.gambling-online-theory.com/casinos-portal/internet-casinos-sites.html internet casinos sites]
 +
[http://www.casino-games-wiki.com/index.php/play_casino_games_games_online play casino games games online]
 +
[http://www.casinos-go.com/online-casino-tips/index.html online casino tips]
 +
[http://www.gambling-online-theory.com/casinos-portal/index.html casinos portal]
 +
[http://www.gambling-online-theory.com/casinos-portal/casinos-games.html casinos games]

Revision as of 16:43, 3 December 2006

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


blackjack hints online casino for cash casino games online free online casino tournament free online casino tournament internet casinos sites play casino games games online online casino tips casinos portal casinos games