Divmod:一个Elixir函数中的一个除法的商和余数

时间:2018-05-25 10:34:49

标签: math elixir

在许多编程语言中,有一个组合操作,它将商的除数和余数作为整数返回。在很多情况下,它被称为divmod,因为它在一个步骤中同时用于除法和模数函数。

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

Elixir中是否有这样的组合功能?我只能单独找到divrem

1 个答案:

答案 0 :(得分:3)

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

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实际上不是做数学的最佳选择。