2011-01-25 123 views
2

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

我在找的是java.math.BigDecimal的替代方法。

任何人都可以指向正确的方向吗?

谢谢!

+1

GCJ究竟是什么?如果它不支持标准Java API的某些部分,那么您如何确定它会支持您的新库? – 2011-01-25 20:43:40

+0

您确定gcj不支持*标准* Java API的某些部分吗?这听起来更像是一个图书馆问题,与gcj的问题。 – 2011-01-25 20:45:28

回答

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 enum(旧方法仍保持向下兼容)来指定它,而不是指定roundingMode的整数值(使用BigDecimal中的静态整数)。

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