3

这可能特别奇怪,但我必须针对 GCJ 编译几个新代码;不支持 Java 的 BigDecimal。

我正在寻找的是 java.math.BigDecimal 的替代品。

谁能指出我正确的方向?

谢谢!

4

1 回答 1

3

看起来 gcj 正在针对 JDK 1.4.2 进行编译,它只提供setScale(int scale, int roundingMode)setScale(int scale).

您尝试编译的代码似乎是为 JDK 1.5.0 及更高版本编写的。在 JDK 1.5.0setScale(int newScale, RoundingMode roundingMode)中,除了其他两个之外,您还可以获得。

您可以查看 gcj 是否有允许使用 1.5 的更新。从查看gcj 网站,我不认为是这种情况。它说当前版本“支持大多数 1.4 库以及一些 1.5 附加功能”。

您的另一个选择是重写代码,以便调用setScale(int newScale, RoundingMode roundingMode)替换为setScale(int scale, int roundingMode). 在 1.5.0 中,您可以使用枚举指定它,而不是为roundingMode(使用静态整数)指定一个整数值(为了向后兼容,仍然保留旧方法)。BigDecimalRoundingMode

因此,在您的代码中RoundingMode.CEILING,您将使用BigDecimal.ROUND_CEILING.

于 2011-01-25T21:00:59.650 回答