2011-01-25 119 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