这可能会特别奇怪但我必须编译几个针对GCJ的新代码;这不支持Java的BigDecimal。
我正在寻找的是java.math.BigDecimal的替代品。
有人能指出我正确的方向吗?
谢谢!
答案 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
。