这可能特别奇怪,但我必须针对 GCJ 编译几个新代码;不支持 Java 的 BigDecimal。
我正在寻找的是 java.math.BigDecimal 的替代品。
谁能指出我正确的方向?
谢谢!
最佳答案
看起来 gcj 是针对 JDK 1.4.2 编译的,它只提供了 setScale(int scale, int roundingMode)
和 setScale(int scale)
。
您尝试编译的代码似乎是为 JDK 1.5.0 及更高版本编写的。在 JDK 1.5.0 中,除了其他两个之外,您还获得了 setScale(int newScale, RoundingMode roundingMode)
。
您可以查看是否有 gcj 更新可以使用 1.5。通过查看 gcj website ,我认为情况并非如此。它表示当前版本“支持大部分 1.4 库以及一些 1.5 添加的内容。”
您的另一个选择是重写代码,以便将对 setScale(int newScale, RoundingMode roundingMode)
的调用替换为 setScale(int scale, int roundingMode)
。在 1.5.0 中,不是为 roundingMode
指定整数值(使用 BigDecimal
中的静态整数),而是可以使用 RoundingMode
指定它枚举(为了向后兼容,仍然保留旧方法)。
因此在您的代码中,您将使用 BigDecimal.ROUND_CEILING
而不是 RoundingMode.CEILING
。
关于Java BigDecimal 替代库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4798592/