Elixir 中的模运算符

2023-12-25

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

例如,在 Ruby 中你可以这样做:

5 % 2 == 0

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


对于整数,使用Kernel.rem/2 https://hexdocs.pm/elixir/Kernel.html#rem/2:

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

来自文档:

计算整数除法的余数。

rem/2使用截断除法,这意味着结果将始终 有 的 标志dividend.

提出一个ArithmeticError如果参数之一不是一个例外 整数,或者当divisor is 0.

与 Ruby 相比,主要区别似乎是:

  1. rem只适用于整数,但是%根据数据类型完全改变其行为。
  2. Elixir 中负股息的符号为负(与 Ruby 的相同)remainder https://ruby-doc.org/core-2.6.1/Integer.html#method-i-remainder):

Ruby:

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

Elixir:

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

长生不老药的rem只使用Erlang的rem, so 这个相关的 Erlang 问题 https://stackoverflow.com/questions/353224/how-do-you-do-modulo-or-remainder-in-erlang可能也有用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elixir 中的模运算符 的相关文章

  • 无法从 powershell 运行 Elixir 应用程序

    当我打字时iex S mix在 PowerShell 中我收到此错误 Invoke Expression A positional parameter cannot be found that accepts argument mix At
  • 使用分数的模算术

    我陷入了这个使用整数和分数模 10 相乘的密码学问题 这是等式 7 4 11 mod 10 我知道我应该将其转换为整数 因为 mod 运算符不适用于分数 但我无法弄清楚这一点 明显地 7 4 11 28 11 但我无法得到分数的 mod 1
  • 如何在 Phoenix 框架中有选择地禁用 CSRF 检查

    我正在尝试创建一个指向我的网站的 Facebook 页面选项卡 Facebook 向我网站的 url 发送 HTTP POST 请求 这里的问题是服务器有内置的 CSRF 检查 它返回以下错误 Plug CSRFProtection Inv
  • 查找 Elixir/Erlang 内存文件的长度?

    在 Elixir 或 Erlang 中 如果我有一个内存文件 如何找到它的字节长度 ok fd file open ram read write file write fd hello 不确定是否有更好的方法 但这就是我所做的 def ge
  • 如何测试 Phoenix 套接字是否已终止?

    我正在寻找一种方法来测试套接字是否被终止 被测试的代码执行以下操作 def handle in logout payload socket do stop logout socket gt assign user nil end 和我的测试
  • 使用 HTTPoison 初始化模块属性

    我正在尝试像这样初始化模块属性 response HTTPoison get url ok response Poison decode response body attr response 我以前用一个文件做过这样的事情 externa
  • Ecto迁移中如何动态更新字段值?

    我有一个用户表 例如 email username email protected cdn cgi l email protection email protected cdn cgi l email protection email pr
  • 算术溢出相当于模运算吗?

    我需要在 C 中进行模 256 算术 那么我可以简单地做吗 unsigned char i i 代替 int i i i 1 256 不 没有什么可以保证unsigned char有八位 使用uint8 t from
  • 使用迭代器将数组划分为大小不等的部分

    我有一个数组 需要将其分为 3 元素子数组 我想用迭代器来做到这一点 但最终我迭代到了数组的末尾并出现段错误即使我没有取消引用迭代器 给定 auto foo 1 2 3 4 5 6 7 8 9 10 我正在做 auto bar cbegin
  • 如何使用 Ecto 的时间戳向现有表添加时间戳?

    Since inserted at and updated at不可能是null这是行不通的 def change do alter table channels do timestamps end end Postgrex Error E
  • Phoenix:订购查询集

    我 一个菜鸟 为了好玩而玩弄 Phoenix 框架并构建一个小型 Twitter 克隆 我一切正常 但是 我想按updated at字段 升序 正如您从 tweet controller 中看到的 我尝试过使用 order by 子句 但这
  • 如何将浮点数包装到区间 [-pi, pi)

    我正在寻找一些可以有效完成的不错的 C 代码 while deltaPhase gt M PI deltaPhase M TWOPI while deltaPhase lt M PI deltaPhase M TWOPI 我有什么选择 更新
  • 如何编写在日期时间字段上执行 group_by MONTH 的 Ecto 查询

    我正在执行 ecto 查询并尝试进行分组q created date 此查询成功执行了 GROUP BY 但它是按秒执行的 我正在尝试按月分组 MYQUERY gt group by q q created date q id 有没有类似的
  • 如何在 Elixir 中截断字符串?

    我正在使用长生不老药的鼻涕虫 想法是 我有一个字符串 a zA Z0 9 用连字符分隔的单词 喜欢 string another long string to be truncated and much text here 我想确保最大字符
  • Elixir 中的小数四舍五入

    我有这个十进制数 Elixir c1 Decimal div a1 b1 gt Decimal lt 0 006453859622556080696687234694 gt 如何将其四舍五入为小数点后位数较少的较短数字 正如 Dogbert
  • 类型不匹配插入:binary_id 与 Ecto 变更集

    我有一张桌子applications有外键user id这是一个 Postgresuuid 我在我的web ex primary key id binary id autogenerate true foreign key type bin
  • Elixir 如何将 Map 结构转换为 Record 结构

    我有一个 Record 结构和一个 Map 结构 例如 defmodule Foo Bar do defstruct boo nil baz nil end defmodule Foo do require Record Record de
  • 让 Ecto 查询更高效

    我正在尝试查看当前用户的团队是否与传入的用户团队重叠 我有一些有用的东西 但我很好奇它是否能让我更有效率 这是我所拥有的 user teams from t in MyApp Team left join a in assoc t acco
  • 限制纬度和经度值的模数

    我有代表纬度和经度的双精度数 我可以轻松地将经度限制为 180 0 180 0 具有以下功能 double limitLon double lon return fmod lon 180 0 360 0 180 0 这是有效的 因为一端是排
  • Elixir - 尝试/捕获 vs 尝试/救援?

    背景 Both try rescue and try catch是 Elixir 中的错误处理技术 根据相应章节 http elixir lang org getting started try catch and rescue html在

随机推荐