BigDecimal
Javaの値の小数点以下の最大桁数は何桁ですか?
2 に答える
それは(ほぼ)無制限です。scale が整数の最大値に設定されている場合、小数点以下約 20 億桁を格納できますが、これを行おうとするとメモリが不足する可能性があります。制限が問題になるほど多くの桁を保存する必要がある場合は、おそらくプログラムの設計を再考する必要があります。
BigDecimal のドキュメントを参照してください。
不変の任意精度の符号付き 10 進数。BigDecimal は、スケーリングされていない任意精度の整数値と 32 ビットの整数スケールで構成されます。ゼロまたは正の場合、位取りは小数点以下の桁数です。負の場合、数値のスケーリングされていない値は、10 のスケールの負の累乗で乗算されます。したがって、BigDecimal で表される数値の値は (unscaledValue × 10 -scale ) です。
BigDecimal Java 2 Platform Standard Edに記載されている内容によると。5.0 :
不変の任意精度の符号付き 10 進数。BigDecimal は、スケーリングされていない任意精度の整数値と 32 ビットの整数スケールで構成されます。ゼロまたは正の場合、位取りは小数点以下の桁数です。負の場合、数値のスケーリングされていない値は、10 のスケールの負の累乗で乗算されます。したがって、BigDecimal で表される数値の値は (unscaledValue × 10^(-scale)) です。
Java の 32 ビット整数の実装によると、次のようになります。
int: int データ型は、32 ビットの符号付き 2 の補数整数です。最小値は -2,147,483,648 で、最大値は 2,147,483,647 (包括的) です。整数値の場合、他のものを選択する理由 (上記のような) がない限り、通常、このデータ型がデフォルトの選択です。このデータ型は、プログラムが使用する数値に対して十分な大きさである可能性が高いですが、より広い範囲の値が必要な場合は、代わりに long を使用してください。
これは、ゼロまたは正の位取り数の場合、小数点の右側に 2,147,483,647 桁あることを意味します。負の位取りの数値の場合、unscaledValue を小数点の右側に 2,147,483,648 桁シフトします。