Java BigDecimal替代库

时间:2011-01-25 20:42:25

标签: java bigdecimal gcj

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

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

有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

看起来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枚举来指定它(旧的方法仍然保留为向后兼容)。

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