2011-01-25 10 views
2

이것은 특히 이상하게 보일 수 있지만 GCJ에 대한 몇 가지 새로운 코드를 컴파일해야합니다. Java의 BigDecimal는 지원하지 않습니다.Java BigDecimal 대체 라이브러리

내가 찾고있는 것이 java.math.BigDecimal의 대안입니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까?

감사합니다.

+1

GCJ는 정확히 무엇입니까? 표준 Java API의 일부를 지원하지 않는 경우 어떻게하면 새 라이브러리를 지원할 수 있습니까? –

+0

gcj가 * 표준 * Java API의 일부를 지원하지 않습니까? 이것은 gcj의 문제점 인 라이브러리 문제와 비슷하게 들립니다. –

+1

@Nikita GCJ는 Java 용 Gnu 컴파일러입니다. http://gcc.gnu.org/java/ - 실제로 엉덩이에 통증이 생기고 새 라이브러리를 지원하는지 여부는 알 수 없지만 완전히 캡슐화 된 (새 라이브러리) Java 1.4 구문 만 사용하므로 아마 안전 할 것입니다. – Frankie

답변

3

gcj가 setScale(int scale, int roundingMode)setScale(int scale)만을 제공하는 JDK 1.4.2에 대해 컴파일하는 것처럼 보입니다.

컴파일하려는 코드가 JDK 1.5.0 이상으로 작성된 것 같습니다. JDK 1.5.0에서는 다른 두 가지 외에도 setScale(int newScale, RoundingMode roundingMode)을 얻습니다.

1.5를 사용할 수 있도록 gcj에 대한 업데이트가 있는지 확인할 수 있습니다. gcj website에서 보았을 때 나는 이것을 사례로 보지 않습니다. 현재 버전은 1.4 라이브러리의 대부분과 1.5 부가 기능을 지원한다고합니다.

다른 옵션은 setScale(int newScale, RoundingMode roundingMode)에 대한 호출이 setScale(int scale, int roundingMode)으로 바뀌도록 코드를 다시 작성하는 것입니다. 1.5.0에서는 roundingMode의 정수 값을 지정하는 대신 (BigDecimal의 정적 int 사용) RoundingMode 열거 형을 사용하여 지정할 수 있습니다 (이전 버전과의 호환성을 위해 이전 방법은 계속 유지됩니다).

코드에서 RoundingMode.CEILING 대신 BigDecimal.ROUND_CEILING을 사용합니다.

+0

Vivin은 완벽하게 작동합니다. 몇 가지 변경 작업을해야하지만 훌륭하게 작동합니다. 감사! – Frankie

+0

@Frankie 문제가 없습니다. 실례합니다. 나는 gcj를 많이 사용하지 않았기 때문에 그런 고통을 알지 못했습니다! –