2017-06-19 38 views
1

我正在构建汇率应用并将Firebase用作数据存储。 在以前的版本1中,存储了费率数据的字符串,并将字符串转换为Android设备上的BigDecimal进行计算。 现在,虽然我正在处理版本2,但我决定检查代码并进行更新。我发现解决方案以整数类型存储费率数据,而不是转换回Decimal/Double/Float。Firebase - 存储货币类型值

流量:

后端的Python - > dataTostore = INT(汇率值* 100) 的Android的Java - > rateValue = dataToStore/100.00

这个问题的经验吗?

如何解决或使用string-BigDecimal足够好?

谢谢。

回答

0

以最小面额计数存储货币值是常见操作。它确保您始终可以计算完整值并降低与浮点类型相关的四舍五入误差的风险。

整数类型是否足够取决于您想存储的最大值。

Firebase数据库内部支持已签名的64位长(-2^63 ... 2^63-1)。请注意,JavaScript在内部使用64位双精度值,因此某些大整数(大于2^53)不能精确表示,并且将失去精度。