Elixir中的Modulo运算符

问题描述 投票:0回答:3

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

例如在Ruby中,您可以:

5 % 2 == 0

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

elixir modulo
3个回答
3
投票

使用rem/2参见:https://hexdocs.pm/elixir/Kernel.html#rem/2所以在Elixir你的例子变成:

rem(5,2) == 0

返回false

顺便说一下你在Elixir中用%写的东西只是开始评论到行尾。


3
投票

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

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

来自文档:

计算整数除法的余数。

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

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

与Ruby相比的主要差异似乎是:

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

红宝石:

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也可能有用。


0
投票

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

iex>Integer.mod(-5, 2)
1
© www.soinside.com 2019 - 2024. All rights reserved.