mik*_*iku 14
因为div参数需要是整数./接受任意数字作为参数,尤其是浮点数.因此,对于您的示例,以下内容将起作用:
1> 4613.9145 / 100.
46.139145
Run Code Online (Sandbox Code Playgroud)
要区别对比,请尝试:
2> 10 / 10.
1.0
3> 10 div 10.
1
Run Code Online (Sandbox Code Playgroud)
文档:http://www.erlang.org/doc/reference_manual/expressions.html
更新:有时表示的整数除法\可以定义为:
a \ b = floor(a / b)
Run Code Online (Sandbox Code Playgroud)
所以你需要一个floor函数,它不在标准的lib中.
% 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) .
Run Code Online (Sandbox Code Playgroud)
用法:
$ erl
...
Eshell V5.7.5 (abort with ^G)
> c(intdiv).
{ok,intdiv}
> intdiv:idiv(4613.9145, 100).
46
Run Code Online (Sandbox Code Playgroud)
Erlang中的整数除法div定义为将两个整数作为输入并返回一个整数.您在之前的评论http://mathworld.wolfram.com/IntegerDivision.html中提供的链接仅在其示例中使用整数,因此在此讨论中并不真正有用.使用trunc和round将允许您使用任何您想要的参数.