如何存储加密货币余额而不会在ruby / rails中导致浮点错误

时间:2017-10-19 11:25:39

标签: ruby-on-rails ruby database floating-point

我正在创建一个rails应用程序,用户将在以太坊和其他加密货币中拥有帐户余额。目前我将用户余额存储为浮动。然而,这是一种非常糟糕的方法,因为加密货币通常可以分为8位数,因此任何浮点错误都会导致资金的巨大损失/收益。如何存储用户余额(我应该使用哪种数据类型)以免导致浮点错误?感谢

2 个答案:

答案 0 :(得分:2)

我建议将值存储为整数。只需在存储它们时将货币值乘以一百万(或其他),并在应用程序中根据需要进行转换。

答案 1 :(得分:1)

Ruby有一个特殊的类:

BigDecimal - > https://ruby-doc.org/stdlib-2.4.0/libdoc/bigdecimal/rdoc/BigDecimal.html