IBM 和 Oracle 在 java 8 中 java BigDecimal 的实现有何不同?



谁能解释一下 Java 8 中 IBM 和 Oracle 的 java BigDecimal 实现的差异?

我知道 IBM 的 BigDecimal 实现 (com.ibm.math.BigDecimal( 已被弃用,我想转向 Oracle 实现 (java.math.BigDecimal(,但我想知道 2 个版本之间的主要区别(从版本 java 8 开始(。

谢谢。

IBM将他们的代码捐赠给了Java 5。

OpenJDK 中的BigDecimal实现是原始 IBM 实现的延续和演变。请注意 OpenJDK 源代码中的 IBM 版权声明。也许您可能会对该文件的更改历史记录感兴趣。

自从他们捐赠以来,我知道已经取得了一些重大进展,尽管我不记得细节了。在JavaOne会议上进行了演讲,讨论了这些改进,错误修复和数学相关问题。

迁移非常简单:

  • 更改import语句。
  • 知道任何序列化的对象都不能在两个实现之间读取(被标识为来自两个不同的类(。

引用 IBM 的话:

增强型大十进制

从Java™ 5.0开始,IBM® BigDecimal 类已被 Oracle 采用为 java.math.BigDecimal。com.ibm.math.BigDecimal 类保留供 IBM 将来使用,目前已弃用。迁移现有 Java 代码以使用 java.math.BigDecimal。

新的java.math.BigDecimal 使用与以前的java.math.BigDecimal 和com.ibm.math.BigDecimal相同的方法。使用 java.math.BigDecimal 的现有代码继续正常工作。这两个类不序列化。

要迁移现有 Java 代码以使用 java.math.BigDecimal 类,请将.java文件开头的 import 语句从:import com.ibm.math 更改。;导入 java.math.;。