根据定义,整数除法返回商。
为什么4613.9145 div 100.
给出错误(“错误参数”)?
最佳答案
对于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
更新:Integer division(有时表示为
\
)可以定义为: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
关于erlang - 整数除法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4749911/