2012-05-18 21 views
13

私はBigDecimal Classを読んでいましたが、どのようにしてコンピュータメモリに値が格納されているのかについての情報は見つかりませんでした。BigDecimalBigDecimalはどのように実装されていますか?

この情報を提供する信頼できる情報源はありますか?

+9

Javaはオープンソースです。私はちょうどその[ソースコード](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/math/BigDecimal.java/)を見てみよう。 。 – BalusC

+2

しかし、私はそれがソースコードからどのように動作するかを知るためにJavaではうまくいきません。 –

+2

ソースを読むことは、Javaをより良くするための1つの方法です。 – trashgod

答えて

5

数字の桁数がlongに収まるのに十分な場合は、有効桁数がlongに格納されます。そうでない場合、BigIntegerに格納されます。さらに、BigDecimalには、scale and precisionを表すintプリミティブと、小数点以下の有効桁数を表す桁数と、その桁数の有効桁数を示す精度があります。

14

BigDecimalのスケーリングされていない値はBigIntegerに格納されます。 32ビット整数のbig-endianアレイ、及び別の32ビット整数として別々に符号として

BigInteger intVal 
int scale 
int precision 

BigInteger格納整数:precision and scaleは整数フィールドに別々に格納されています。

int signum 
int[] mag 

しかしMuhdが言うように数が64ビットの整数に合うことができるならば、これは代わりのBigIntegerの使用されています。

関連する問題