在Elixir/Erlang中只有2位小数的数值,推荐的处理货币数据类型是什么?
我认为在处理金钱时应该始终使用整数。浮点运算可能存在舍入误差,即使相差 1 美分,货币处理代码通常也不行。例如,而不是
amount = 99.99
用
amount_cents = 9999
如果你将数量存储在数据库中,这一点就显得尤为重要,因为Elixir和数据库之间的转换可能会产生不希望的结果。
我强烈建议使用十进制库。在处理所有困难的边缘情况方面已经投入了很多思想和工作。
金钱,就像密码学一样,不是你应该自己实现的东西。你会弄错的。
使用十进制库是货币处理逻辑的方法, 特别是当您必须对数量执行算术运算时。