使用 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。
我需要将财务数据保存到云数据存储(不是通过应用引擎,而是使用云数据存储 API 测试版);价格信息使用 BigDecimal 存储在我们的对象中。
根据 api 文档,数字类型仅支持双精度和长整型。
由于双精度和精度的性质,我担心使用 BigDecimal 的 doubleValue() 方法保存价格,另一种方法是使用 toString 并保存为字符串,但这感觉效率低下。
您认为合适的方法是什么?
谢谢
我建议将其保存为 String
值(尤其是财务数据时)。仅仅是因为这样您就可以通过 BigDecimal(String)
构造函数恢复具有完全可预测结果的值。
请参阅其 javadoc 中的 BigDecimal(double)
构造函数注释。
一个String
就可以了。或者,如果您需要 sort/filter 金额,请将您的值乘以您需要的小数位数,并将其存储为 Long
.
例如:货币金额。 10.23 美元 x 100 = 1023。