使用Google Cloud Datastore API存储Java BigDecimal的最佳方法是什么

时间:2016-04-03 16:54:42

标签: google-cloud-datastore

我需要将财务数据保存到云数据存储区(不是通过appengine,使用云数据存储API测试版);价格信息使用BigDecimal存储在我们的对象中。

根据api文档,只支持double和long作为数字类型。

由于double和precision的性质,我担心使用BigDecimal的doubleValue()方法保存价格,另一种方法是使用toString并保存为String但这样效率很低。

您建议采用哪种方法?

由于

2 个答案:

答案 0 :(得分:0)

I would recommend saving it as a String value (especially if it is financial data). Simply because then you can restore the value with perfectly predictable result by means of BigDecimal(String) constructor.

See BigDecimal(double) constructor notes in its javadoc.

答案 1 :(得分:0)

String没问题。或者,如果您需要对金额进行排序/过滤,请将您的值乘以所需的小数位数,然后将其存储为Long

例如:用于货币金额。 $ 10.23 x 100 = 1023。