2011-12-16 3 views
4

나는 계산을 수행하기 위해 BigDecimal을 사용합니다. 계산 결과에 대한 내가 할 :BigDecimal 스케일 및 계산

result.setScale(4, RoundingMode.HALF_UP); 

필요 BigDecimal 규모 및 라운딩의 .divide 방법을 사용하는 경우, 그래서 지금은 이런 식으로 작업을 수행합니다

BigDecimal result = bigDecimal1.divide(bigDecimal2, 10, RoundingMode.HALF_UP); 

그래서 난 그냥를 사용 계산이 옳다는 것을 알기에 충분히 큰 규모. 그러나 이것이 BigDecimal로 계산을 수행하는 올바른 방법인지 잘 모르겠습니다.이 문제에 대한 의문이 생깁니다 ...

그래서 모든 포인터에 감사드립니다.

+1

그리고 질문은 무엇입니까? – jarnbjo

+0

@jarnbjo 내가 제대로하고 있다면? 그리고 그렇지 않다면 어떻게해야합니까? ... –

+1

그리고 우리가 제공 한 기능적 요구 사항을 통해 우리가 올바른 일을하는지 여부를 결정할 수 있습니까? – jarnbjo

답변

2

올바른 대답으로 생각하는 것이 무엇인지 명확하게 알 필요가 있습니다. 오류가 1e-10보다 작 으면 ok입니다. 그렇지 않으면 1e-20 또는 1e-30 등이 필요합니다. 많은 division 결과의 경우 결과가 소수로 표시되기 때문에 정확한 결과를 얻을 수 없습니다.

BTW : 유효 자릿수가 15 자 미만인 경우 double을 사용하는 것이 정확하며 BigDecimal을 사용할 필요가 없습니다.

1/3은 0.333333333 또는 0.333333333333333333으로 간주되지만 절대 정확하지는 않습니다 (길이가 무한).

+0

통찰력에 감사드립니다. –