2012-05-18 2 views
13

BigDecimal Class을 읽었지만 컴퓨터 메모리에 값을 저장하는 방법에 대한 정보를 찾을 수 없었습니다.BigDecimal은 어떻게 구현됩니까?

이 정보를 제공 할 수있는 신뢰할 수있는 출처가 있습니까?

+9

자바는 오픈 소스입니다. 나는 그것의 [소스 코드] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/)를 살펴보기 만하면된다. . – BalusC

+2

좋아요,하지만 Java가 소스 코드에서 어떻게 작동하는지 배우는 것은 좋지 않습니다. –

+2

소스를 읽는 것이 Java에서 더 좋은 방법 중 하나입니다. – trashgod

답변

5

자릿수가 long에 들어가기에 충분하면 숫자의 유효 자릿수는 long에 저장되며, 그렇지 않으면 BigInteger에 저장됩니다. 또, BigDecimal에는, scale and precision을 나타내는 int 프리미티브가 있습니다. 소수점 이하의 유효 자리수를 나타내는 스케일과 그 수에 포함되는 유효 자리수를 나타내는 정밀도를 나타냅니다.

14

BigDecimal의 스케일되지 않은 값은 BigInteger에 저장됩니다. precision and scale 정수 필드 별도로 저장된다

BigInteger intVal 
int scale 
int precision 

BigInteger 저장 정수를 32 개 비트 정수 big-endian 배열하고, 다른 32 비트 정수로서 개별적으로 서명한다.

int signum 
int[] mag 

그러나 Muhd ​​말한대로 수를 64 비트 정수에 들어갈 수 있다면, 다음이 대신 BigInteger를 사용됩니다.

관련 문제