Elixir中的模运算符

时间:2019-02-20 16:03:18

标签: elixir modulo

如何在Elixir中使用模运算符?

例如在Ruby中,您可以执行以下操作:

5 % 2 == 0

它与Ruby的模运算符有何不同?

3 个答案:

答案 0 :(得分:3)

对于整数,请使用Kernel.rem/2

iex(1)> rem(5, 2)
1
iex(2)> rem(5, 2) == 0
false

从文档中

  

计算整数除法的余数。

     

rem/2使用截断法,这意味着结果将始终   带有dividend的符号。

     

如果其中一个参数不是整数,则引发ArithmeticError异常   整数,或者divisor为0时。

与Ruby相比,主要区别在于:

  1. rem仅适用于整数,但是%完全根据数据类型更改其行为。
  2. 在Elixir中,负股息的符号为负(与Ruby的remainder相同):

Ruby:

irb(main):001:0> -5 / 2
=> -3
irb(main):002:0> -5 % 2
=> 1
irb(main):003:0> -5.remainder(2)
=> -1

长生不老药:

iex(1)> -5 / 2
-2.5
iex(2)> rem(-5, 2)
-1

Elixir的rem仅使用Erlang的rem,因此this related Erlang question也可能有用。

答案 1 :(得分:3)

使用location.reload()参见:https://hexdocs.pm/elixir/Kernel.html#rem/2 因此,在Elixir中,您的示例变为:

rem/2

返回rem(5,2) == 0

顺便说一句,您在Elixir中使用false编写的内容只是在行尾添加了注释。

答案 2 :(得分:0)

使用Integer.mod/2,请参阅:https://hexdocs.pm/elixir/Integer.html#mod/2

iex>Integer.mod(-5, 2)
1