在Elixir/Erlang中处理Money(只需2个小数位)的推荐数据类型是什么?

Cha*_*gwu 2 erlang elixir

处理Money的推荐数据类型是什么 - 在Elixir/Erlang中只有2位小数的数值?

Jes*_*ieh 7

我认为你在处理钱时应该总是使用整数.浮点运算可能会出现舍入错误,而且处理代码即使1美分也是不合适的.例如,而不是

amount = 99.99
Run Code Online (Sandbox Code Playgroud)

使用

amount_cents = 9999
Run Code Online (Sandbox Code Playgroud)

如果您将数量存储在数据库中,这是非常重要的,因为Elixir和您的数据库之间的转换可能会产生不良结果.

  • 金钱是一个非常复杂的主题,很多应用程序从不需要它(两年多来我一直没有写过与金钱相关的代码),因此,它不应该真正属于语言的核心库。我在一个系统上工作,例如,实际上我们需要的精度比美分要小-在标准库中拥有所有这些要求可能会使它无法使用(我们使用整数-这通常是最简单的解决方案,除非使用货币,等通常发挥的重要作用,尤其是内置bignum库时) (2认同)
  • @CharlesOkwuagwu我认为你从未在金融业工作过.适当的舍入和缩放可以等于数百万美元. (2认同)