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

时间:2018-03-12 16:12:13

标签: java bigdecimal

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

之外我不会对这个领域做任何事情
  1. 在UI上呈现它。
  2. 给它另一个应用程序(通过http),可以将其写入另一个数据库。
  3. 考虑到数据库中的数据类似于double的类型,我没有看到将双精度数据库字段转换为BigDecimal的任何优势,因为它无论如何都会转换为字符串(对于UI而言) ,或用于网络服务。)

    我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

不要求BigDecimal用于货币值,但是您必须确保精确存储金额,而不会在floatdouble数据类型中遇到任何舍入或精度问题。

实现这一目标的方法很少:

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