2012-05-18 19 views
13

Estaba leyendo BigDecimal Class pero no pude encontrar ninguna información sobre cómo la clase BigDecimal almacena valores en la memoria de la computadora.¿Cómo se implementa BigDecimal?

¿Conoces alguna fuente confiable que pueda proporcionar esta información?

+9

Java es de código abierto. Comenzaría simplemente buscando en su [código fuente] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/) . – BalusC

+2

OK, pero no soy tan bueno en Java para aprender cómo funciona desde un código fuente. –

+2

Leer la fuente es una forma de mejorar en Java. – trashgod

Respuesta

5

Los dígitos significativos del número se almacenan en un largo si el número de dígitos es suficiente para que quepa en un largo, de lo contrario se almacenan en un BigInteger. Además, BigDecimal tiene primitivas int para representar scale and precision, una escala que indica el número de dígitos significativos a la derecha del punto decimal y una precisión que indica el número total de dígitos significativos en el número.

14

El valor sin escala del BigDecimal se almacena en un BigInteger. El precision and scale se almacenan por separado en los campos de enteros:

BigInteger intVal 
int scale 
int precision 

BigInteger almacena el número entero como una matriz de big-endian de 32 bits enteros, y el signo por separado como otro número entero de 32 bits.

int signum 
int[] mag 

Pero como dice Muhd, si el número puede caber en un entero de 64 bits, entonces esta se utiliza en lugar de un BigInteger.