jpk*_*ing 21
在Java应用程序中使用money数据类型的最佳实践是什么?
使用BigDecimal.使用任何原语迟早会导致精度问题.
那么在大多数流行的数据库中ORM和SQL呢?
Hibernate(可能还有其他所有人)可以很好地处理BigDecimal.它转换为适当的数据库类型,通常是DECIMAL.
dog*_*ane 18
您应该BigDecimal用来表示货币价值.
来自Bloch,J.,Effective Java,2nd ed,Item 48:
这些
float和double类型特别不适合进行货币计算,因为不可能将0.1(或任何其他10的负幂)表示为afloat或double精确.例如,假设您有1.03美元,而您花费42c.你还剩多少钱?
Run Code Online (Sandbox Code Playgroud)System.out.println(1.03 - .42);打印出来
0.6100000000000001.解决这个问题的正确方法是使用
BigDecimal,int或long货币计算.
对于SQL,我使用NUMERIC(19,2).