为什么Elixir中的Rem运算符返回负数?

Bat*_*u99 3 elixir

我正在尝试一个简单的操作

rem(-1, 25)
Run Code Online (Sandbox Code Playgroud)

我希望它能够提醒整数除法并返回24(与Ruby中相同),但它返回-1.难道我做错了什么?长生不老药的行为被打破了吗?

Jos*_*lim 7

其余部分的符号实际上是根据编程语言更改的:https://en.wikipedia.org/wiki/Modulo_operation.所以两者都是正确的,都是错的.:)

  • 那么在Elixir上添加模运算就像@ simon-jez提到的那样没有用吗?模数运算对于像crypto这样的数学相关工作非常常见. (3认同)

Szy*_*Jeż 7

红宝石:

irb > -1.remainder(25) 
 => -1 
Run Code Online (Sandbox Code Playgroud)

药剂:

iex(6)> rem(-1,25)
-1
Run Code Online (Sandbox Code Playgroud)

他们的工作方式相同.

但我认为你的意思是来自Ruby的模数:

irb > -1.modulo(25)
 => 24
Run Code Online (Sandbox Code Playgroud)

如果你需要一个像这样的函数,那么我认为你需要编写自己的函数,如下所述.