如果不对货币金额进行计算,是否需要 BigDecimal?

Is BigDecimal necessary if no calculations are done with the monetary amount?

我有一个 Java 程序可以从数据库中读取数据,并将其显示在用户界面上。其中一种数据类型是金额 - 因此它会自动触发我将 BigDecimal 用作 explained here 。但是在我的例子中,除了

之外,我不对这个字段做任何事情
  1. 在 UI 上渲染它。
  2. 给它另一个应用程序(通过 http),它可以将它写入另一个数据库。

考虑到数据库中的数据是类似于双精度的类型,我认为将双精度数据库字段转换为 BigDecimal 没有任何优势,因为它只是被转换为字符串(无论是 UI,或用于网络服务)。

我是不是漏掉了什么?

没有要求使用 BigDecimal 作为货币值,但是您必须确保金额的存储准确无误,没有 floatdouble 数据中通常会遇到的任何舍入或精度问题类型。

实现这个的方法很少:

  1. Java 9 附带 JSR 354:货币和货币 API 类 例如MonetaryAmount.
  2. 使用最小有意义的货币单位将金额存储为 long,例如对于美元,它是美分。请注意,因为某些货币不使用小数单位,例如日元。
  3. 提到BigDecimal.
  4. 如果您不需要任何处理,请将金额存储为 String。这是一种丑陋的方法,但如果你只是传递周围的数量,它可能会做,例如从 XML 读取并使用 REST API.
  5. 公开