java - 我们可以用 BigDecimal 完全替换使用 Double 吗,有任何性能开销吗?

标签 java double bigdecimal

我有一个处理大量金钱值(value)的Java项目,该项目主要涉及:

  • 从数据库中读取数据,
  • 计算(处理数据)
  • 向用户显示(不需要在数据库中插入或更新)。

我只需要部分货币值的精确度,而不是所有货币值的精确度。所以在这里我可以做:

  1. 在不需要精度时使用 double
  2. 对所有对象使用 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/

相关文章:

iphone - 如何在 iOS 上以全精度打印 double ?

c++ - 如何用逗号打印 double

java - java中大十进制精度零是什么意思

javascript - BigDecimal 在 GWT 编译的 JavaScript 中是如何表示的

java - 大十进制类中的意外输出,java

java - 在哪里可以找到由 eclipse 创建的 android keystore 的默认位置?

java - 使用 BrokeredMessage 消息在 Java 中使用 Azure 队列消息。 getBody() 返回一些头信息,如何摆脱它?

c - 读取 double 值在 C 中的内存监视中产生不完全相同的值

java - String.format() 用数字前导零四舍五入 double - Java

java - 如何匹配另一个文本中间的模式?