首页 > 代码库 > 关于erlang的向上取整和向下取整

关于erlang的向上取整和向下取整

  在erlang的API中,erlang:trunc/1 是就近取整,erlang:round/1是四舍五入的,

整理下:对于正数的向上和向下取整,

1 %% 向上取整2 ceil(N) ->3     T = trunc(N),4     case N == T of5         true  -> T;6         false -> 1 + T7     end.
1 %% 向下取整2 floor(X) ->3     T = trunc(X),4     case (X < T) of5         true -> T - 1;6         _ -> T7     end.

 

而对于负数的向上和向下取整,稍微变通下,即可使用于全部数(包括正数和负数):

%%  取整 大于X的最小整数ceil(X) ->    T = trunc(X),  if     X - T == 0 ->      T;    true ->      if        X > 0 ->          T + 1;        true ->          T      end       end.

 

%%  取整 小于X的最大整数floor(X) ->    T = trunc(X),  if     X - T == 0 ->      T;    true ->      if        X > 0 ->          T;        true ->          T-1      end  end.