首页 > 解决方案 > Divmod:一个 Elixir 函数中除法的商和余数

问题描述

在许多编程语言中,有一个组合运算将除法的商和余数都作为整数返回。在很多情况下,之所以调用它,是divmod因为它在一个步骤中同时满足了除法和模函数的目的。

我想进行一次操作的目的是,除法计算不需要执行两次,结果不需要表示为可能有损的浮点值。

Elixir 有这样的组合功能吗?我只能找到divrem分开。

标签: mathelixir

解决方案


没有语言核心库,但您可以轻松地自己构建它:

divmod =
  fn e, d ->
    ~w|div rem|a
    |> Enum.map(&apply(Kernel, &1, [e, d]))
    |> List.to_tuple()
  end
#⇒ #Function<12.99386804/2 in :erl_eval.expr/5>
divmod.(5, 2)
#⇒ {2, 1}

它没有出现在标准库中有两个可能的原因:a)Elixir意识形态是提供一个脚手架,而不是瑞士刀框架,b)Erlang实际上并不是做数学的最佳选择。


推荐阅读