2014-10-30 2 views
-2

에 반대의 BigDecimal. 캐스트를 사용하면 작동하지 않으며 나와 ClassCastException을 제공합니다.변환 내가 JDBC를 연결 데이터베이스를 조회하고 double 값

이 오브젝트를 올바르게 캐스팅하는 방법에 대한 권장 사항은 무엇입니까?

답장을 보내 주셔서 감사합니다. 그것은 두에 인 BigDecimal를 변환 할 수 있도록

+0

당신은 정밀도를 잃을 것이다 두 배로 변환하고 싶습니까? – brso05

답변

4
result.setResultValueDouble(((BigDecimal)row.get("AMOUNT")).doubleValue()); 

개체의 유형을 변경하지 않는 개체에 캐스팅, 표현의 유형 당신은 BigDecimal를하기 때문에, 그것을 참조하는 데 사용 입니다. 대신 BigDecimal의 doubleValue() 메서드를 호출하십시오.

2

BigDecimal.doubleValue() 방법을 사용할 수 있습니다.

public double doubleValue()

는이 BigDecimal를 double로 변환합니다. 이 변환은 Java ™ 언어 스펙의 5.1.3 절에 정의 된 double에서 float 로의 기본 변환을 축소하는 것과 유사합니다.이 BigDecimal의 절대 크기가 double보다 큰 경우 Double.NEGATIVE_INFINITY 또는 Double로 변환됩니다. .POSITIVE_INFINITY. 반환 값이 유한 일 경우에도이 변환은 BigDecimal 값의 정밀도에 대한 정보를 잃을 수 있습니다.

0

BigDecimal의 doubleValue()를 사용하십시오. BigDecimal 클래스에는 해당하는 double 값을 반환하는 doubleValue()가 있습니다. 그러나 정확도가 중요하다면 double 대 BigDecimal의 정밀도를 잃을 수도 있습니다.

result.setResultValueDouble(row.get("AMOUNT").doubleValue()); 
1

나는 물고기에 당신을 가르 칠 것 같아요 : doubleValue()

0

당신이 필요로하는 경우

이 방법에

http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

이동, 하나는 두 배, 등 짜잔을 반환하는 확인 null을 처리하려면 다음과 같이해야 할 수도 있습니다.

BigDecimal amt = (BigDecimal)row.get("AMOUNT"); 
result.setResultValueDouble(amt != null ? amt.doubleValue() : 0.0)