我将 Java 应用程序中保存货币值的字段从 double
更改为 BigDecimal
,以防止奇怪的双舍入问题,例如“0.20000000000001”。
现在创建了 decimal(19,2)
的 SQL 日期类型,这意味着“.”右侧的 2 位数字。这真的是存储货币值(value)的更好方法吗?或者我是否会以这种方式失去精度?
最佳答案
如果您不想丢失精度值,那么您应该使用 BigDecimal 而不是 BigInteger(在 hibernate/JPA 中的实体类中)
考虑以下演示:
// some calculation
double calculatedValue = 0.20039930000;
BigDecimal amount = new BigDecimal("" + calculatedValue).setScale(2,
BigDecimal.ROUND_HALF_UP);
关于java - 在 Hibernate/JPA 中将货币存储为 BigDecimal -decimal(19,2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24038665/