Для div
аргументы должны быть целыми числами./
принимает произвольные числа в качестве аргументов, особенно с плавающей точкой.Так что для вашего примера будет работать следующее:
1> 4613.9145 / 100.
46.139145
Чтобы сравнить разницу, попробуйте:
2> 10 / 10.
1.0
3> 10 div 10.
1
Документация: http://www.erlang.org/doc/reference_manual/expressions.html
Обновление: Целочисленное деление , иногда обозначаемое \
, может быть определено как:
a \ b = floor(a / b)
Так что вам понадобится функция floor, которой нет в стандартной библиотеке.
% intdiv.erl
-module(intdiv).
-export([floor/1, idiv/2]).
floor(X) when X < 0 ->
T = trunc(X),
case X - T == 0 of
true -> T;
false -> T - 1
end;
floor(X) ->
trunc(X) .
idiv(A, B) ->
floor(A / B) .
Использование:
$ erl
...
Eshell V5.7.5 (abort with ^G)
> c(intdiv).
{ok,intdiv}
> intdiv:idiv(4613.9145, 100).
46