根据定义,整数除法返回商。

为什么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/

10-13 02:16