2012-05-18 35 views
13

BigDecimal Class okuyordum ama BigDecimal sınıfının bilgisayar belleğinde nasıl değeri saklayacağına dair bir bilgi bulamadık.BigDecimal nasıl uygulanır?

Bu bilgileri sağlayabilecek güvenilir bir kaynak biliyor musunuz?

+9

Java açık kaynak. Sadece [kaynak kodu] 'na bakmaya başlıyorum (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/) . – BalusC

+2

Tamam, ama Java'da kaynak koddan nasıl çalıştığını öğrenmek için o kadar iyi değilim. –

+2

Kaynağı okumak, Java'da daha iyi olmanın bir yoludur. – trashgod

cevap

5

Sayının önemli sayıları, rakam sayısı uzun bir şekilde sığmaya yetecek kadar uzunsa saklanır; aksi takdirde, bunlar bir BigInteger'de depolanır. Buna ek olarak, BigDecimal, ondalık noktanın sağdaki anlamlı basamak sayısını ve sayıdaki toplam anlamlı sayıların sayısını belirten kesinliği belirten ölçek olan scale and precision numaralı temsili temsil eder.

14

BigDecimal'un ölçeklenmemiş değeri BigInteger'da depolanır. precision and scale tamsayı alanlarda ayrı ayrı depolanır:

BigInteger intVal 
int scale 
int precision 

BigInteger mağaza tamsayıdır 32 bitlik bir tamsayı big-endian dizisi ve bir 32-bit tamsayı olarak ayrı bir işaret.

int signum 
int[] mag 

Ama Muhd ​​söylediği gibi sayı 64 bit tamsayı sığabilecek eğer, o zaman bu yerine BigInteger kullanılır.