我有一个处理大量金钱值(value)的Java项目,该项目主要涉及:
- 从数据库中读取数据,
- 计算(处理数据)
- 向用户显示(不需要在数据库中插入或更新)。
我只需要部分货币值的精确度,而不是所有货币值的精确度。所以在这里我可以做:
- 在不需要精度时使用 double
- 对所有对象使用 BigDecimals。
我想知道如果我对所有变量都使用 BigDecimal 是否会有任何性能问题?如果我选择选项 1,是否可以节省执行时间? 哪种方式最好? (我使用的是 Java 6)
最佳答案
不要用double
来赚钱Why not use Double or Float to represent currency?
使用 Big Decimal 比内置基元慢 100 倍,并且您不能使用 +
和 -
、/
和 *
与 BigDecimal
但必须使用等效的 BigDecimal 方法调用。
另一种方法是使用 int
而不是 double 来计算美分或任何等价的小数货币,然后在格式化输出给用户时,进行适当的转换以显示值用户期望。
如果你有非常大的值,你可以使用 long
而不是 int
关于java - 我们可以用 BigDecimal 完全替换使用 Double 吗,有任何性能开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848436/