在Elixir/Erlang中处理金钱(仅2位小数)的推荐数据类型是什么?



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

我认为在处理金钱时应该始终使用整数。浮点运算可能存在舍入误差,即使相差 1 美分,货币处理代码通常也不行。例如,而不是

amount = 99.99

amount_cents = 9999

如果你将数量存储在数据库中,这一点就显得尤为重要,因为Elixir和数据库之间的转换可能会产生不希望的结果。

我强烈建议使用十进制库。在处理所有困难的边缘情况方面已经投入了很多思想和工作。

金钱,就像密码学一样,不是你应该自己实现的东西。你会弄错的。

使用十进制库是货币处理逻辑的方法, 特别是当您必须对数量执行算术运算时。

最新更新