2013-10-13 2 views
-4

십진수 처리를위한 작은 자바 클래스 작성을 고려 중입니다. 기본 아이디어는 소수점의 왼쪽에 값을 보유하기위한 필드와 소수점의 오른쪽에 값을 보유하는 필드 두 개를 갖는 것입니다. 예컨대 다음과 같은 번호 :BigDecimal의 메모리 소비량 (Java)

100.50

(100)는 첫 번째 INT에있을 것입니다, 그리고 50 번째에있을 것입니다.

그럴만 한 가치가 있습니까, 아니면 BigDecimal이 구현에서 이미 이와 같은 작업을 수행하고 있습니까?

+4

주위를 둘러 보겠습니다. BigDecimal을 사용하지 않으려는 특별한 이유가 있습니까? –

+1

이 질문이 [SO]에게 맞는지 궁금합니다. "의존적 인 것"이외의 다른 대답을하지 않는 것 같습니다. – ppeterka

+4

@ClickUpvote이 경우 두 번째 정수 (단편에 대한 것)의 내용은 무엇입니까 : '1.00000001'? – ppeterka

답변

3

엄지 손가락의 좋은 규칙은 (J. 블로흐, 효과적인 자바 2 판에서 부연.)되어

"절대로 바퀴를 재발견하지 당신이 무엇을하는 데 사용할 수있는 자바 API 클래스가있는 경우. 언어 개발자는 수년 동안 라이브러리를 수정하고 최적화하여 자주 독립 개발자에게는 실용적이지 않고 계속 최적화하는 방식으로 작업 해 왔습니다. "

귀하의 요구가 간단 할 수 있습니다. 예를 들어, 아마도이 숫자를 사용하여 Dewey Decimal System과 같은 객체를 식별 할 수 있습니다. 그러면 숫자 연산을하지 않을 것입니다. 귀하의 요구 사항이 간단하다면 (귀하가이 번호로 무엇을 할 것인지 알려주지 않았다면), 최적화로서 자신의 클래스를 작성하는 것이 현명 할 수 있습니다.

그러나이 숫자에 대해 어떤 종류의 연산을 수행하려는 경우 BigDecimal을 사용하여 고정 된 정밀도로 숫자를 나타내는 것은 절대적으로 올바른 방법입니다. 나는 기억에 대해서조차 걱정하지 않을 것이다. 기억은 싸다. ,

  • 산술, 스케일 조작, 둥근, 비교, 해시위한 작업을 제공합니다
  • Comparable 인터페이스를 구현 번호
  • 의 하위 클래스 불변 :

    이미 BigDecimal를하는 것도 고려 및 형식 변환.