2012-05-18 14 views
13

Czytałem BigDecimal Class, ale nie byłem w stanie znaleźć żadnych informacji na temat wartości przechowywanych w pamięci klas w pamięci komputera.W jaki sposób wdrażany jest BigDecimal?

Czy znasz jakieś wiarygodne źródło, które może dostarczyć te informacje?

+9

Java jest open source. Zacznę od szukania w jego [kodzie źródłowym] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/) . – BalusC

+2

OK, ale nie jestem tak dobry w Javie, aby dowiedzieć się, jak to działa z kodu źródłowego. –

+2

Czytanie źródła jest jednym ze sposobów na poprawę w Javie. – trashgod

Odpowiedz

5

Znaczące cyfry numeru są przechowywane w długim, jeśli liczba cyfr jest wystarczająca, aby zmieścić się w długim, w przeciwnym razie są przechowywane w BigInteger. Ponadto BigDecimal ma int prymitywów reprezentujących scale and precision, skalę wskazującą liczbę cyfr znaczących z prawej strony przecinka dziesiętnego i precyzję wskazującą liczbę cyfr znaczących łącznie w liczbie.

14

Nieskalowana wartość BigDecimal jest przechowywana w BigInteger. precision and scale są przechowywane oddzielnie w dziedzinach całkowitych:

BigInteger intVal 
int scale 
int precision 

BigInteger sklepów Integer jako big-endian tablicy 32 bitowych liczb całkowitych, a osobno jako znak innej 32-bitowej liczby całkowitej.

int signum 
int[] mag 

Ale jak mówi Muhd, jeżeli liczba może się zmieścić w 64 bitowej liczby całkowitej, to jest używany zamiast BigInteger.

Powiązane problemy