你如何在Erlang中做模数或余数?

Mat*_*att 43 erlang modulo

我是Erlang的新手.你怎么做模数(得到除法的其余部分)?它在大多数类C语言中都是%,但它在Erlang中指定了注释.

有几个人回复了rem,在大多数情况下这很好.但我正在重新考虑这一点,因为现在我需要使用负数而rem会给你一个除法的余数,这与负数的模数不同.

gri*_*ton 40

在Erlang中,5 rem 3.给出2,而-5 rem 3.给-2.如果我理解你的问题,你会想要-5 rem 3.而不是1,因为-5 = -2*3 + 1.

这样做你想要的吗?

mod(X,Y) when X > 0 -> X rem Y;
mod(X,Y) when X < 0 -> Y + X rem Y;
mod(0,Y) -> 0.
Run Code Online (Sandbox Code Playgroud)

  • 或者:mod(X,Y) - >(X rem Y + Y)rem Y. (8认同)

Aln*_*tak 28

erlang模运算符是 rem

Eshell V5.6.4  (abort with ^G)
1> 97 rem 10.
7
Run Code Online (Sandbox Code Playgroud)


Joe*_*ert 9

我在灵药中使用了以下内容:

defp mod(x,y) when x > 0, do: rem(x, y);
defp mod(x,y) when x < 0, do: rem(x, y) + y;
defp mod(0,_y), do: 0
Run Code Online (Sandbox Code Playgroud)

请不要低估这一点,因为它是另一种语言而不是问题.我们都过着梦想,因为我们都拥有光束.