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

What is the best way to store a Java BigDecimal using the Google Cloud Datastore API

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

根据 api 文档,数字类型仅支持双精度和长整型。

由于双精度和精度的性质,我担心使用 BigDecimal 的 doubleValue() 方法保存价格,另一种方法是使用 toString 并保存为字符串,但这感觉效率低下。

您认为合适的方法是什么?

谢谢

我建议将其保存为 String 值(尤其是财务数据时)。仅仅是因为这样您就可以通过 BigDecimal(String) 构造函数恢复具有完全可预测结果的值。

请参阅其 javadoc 中的 BigDecimal(double) 构造函数注释。

一个String就可以了。或者,如果您需要 sort/filter 金额,请将您的值乘以您需要的小数位数,并将其存储为 Long.

例如:货币金额。 10.23 美元 x 100 = 1023。