2012-05-18 17 views
13

Stavo leggendo BigDecimal Class ma non ero in grado di trovare alcuna informazione su come BigDecimal class memorizza i valori nella memoria del computer.Come viene implementato BigDecimal?

Conosci una fonte affidabile in grado di fornire queste informazioni?

+9

Java è open source. Comincerei a cercare nel suo [codice sorgente] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/) . – BalusC

+2

OK, ma non sono così bravo in Java per imparare come funziona da un codice sorgente. –

+2

Leggere la sorgente è un modo per migliorare in Java. – trashgod

risposta

5

Le cifre significative del numero vengono memorizzate in modo prolungato se il numero di cifre è sufficiente per essere inseriti in un intervallo lungo, altrimenti vengono memorizzati in un BigInteger. Inoltre, BigDecimal ha primitive int per rappresentare lo scale and precision, scala che indica il numero di cifre significative a destra del punto decimale e precisione indicando il numero di cifre significative totali nel numero.

14

Il valore non ridimensionato di BigDecimal è memorizzato in un BigInteger. Il precision and scale sono memorizzati separatamente in campi di numeri interi:

BigInteger intVal 
int scale 
int precision 

BigInteger memorizza il numero intero come big-endian array di 32 interi bit, e il segno separatamente come un intero a 32 bit.

int signum 
int[] mag 

Ma, come dice Muhd, se il numero può andare bene in un intero a 64 bit, quindi questo è usato al posto di un BigInteger.

Problemi correlati