2008/02/07

【Java】 BigDecimal

【大整数】
*多数桁処理のために「大十進数(BigDecimal)」のクラスを使う.

使用パッケージ宣言:
import java.math.BigDecimal;


定義(BigDecimal):
「大十進数」はオブジェクトとして定義する必要があるので以下のように定義する.
BigDecimal b = new BigDecimal(
String);
Stringには文字列を入れる.
*また,BigDecimalの配列は他の配列の宣言と同じである.
BigDecimal [] b = new BigDecimal[30];
*これでBigDecimal型の配列,b[30]を宣言したことになる.

演算(BigDecimal):
オブジェクトとして定義した「大十進数」はオブジェクトの演算メソッドを用いて演算を行う.主な演算メソッドを次にあげる.

返り値型種類記述
BigDecimal加法:a + ba.add(b);
BigDecimal減法:a - ba.subtract(b);
BigDecimal乗法:a * ba.multiply(b);
BigDecimal除法:a / ba.divide(b);
BigDecimal剰余:a % ba.remainder(b);
BigDecimalべき乗:a ^ ba.pow(int b);
BigDecimal絶対値:|a|a.abs();
BigDecimal符号反転:a = - aa.negate();
BigDecimal最小値:min aa.min();
BigDecimal最大値:max aa.max();
BigDecimal合同:a ≡ c (mod b)c = a.mod(b);
BigDecimalべき乗の合同:a ^ m ≡ c (mod b)c = a.modPow(m, b);
BigDecimal逆元(mod b):a ^ -1 (mod b)a.modInverse(b);
BigDecimal最大公約数(gcd(a, b)):gcd(a, b)a.gcd(b);
boolean等号:a == ba.equals(b);
int大小比較:a <>a.compareTo(b);

*表中のa, b, cは特に断りがない限り,BigDecimal型.
*「equals」はboolean型のメソッド.オブジェクトの同一性をチェック
*「compareTo」はint型のメソッドで,「a < a =" b」の場合0,「a"> b」の場合1となる.


出力(BigDecimal):
*大十進数はオブジェクト型のデータなので,出力の際はデータ変換で文字列型にしてから出力する.
System.out.println("BigDecimal b = "+b.toString());


*大十進数の文字列化にはDecimalFormatクラスが向いている.DecimalFormatクラスを使用することで,小数点の桁数,カンマをつけることができる.


例:
使用パッケージ宣言:
import java.text.DecimalFormat;

フォーマットの用意:
String format = "0.00000000000000000000";
DecimalFormat dF = new DecimalFormat( format );

BigDecimalを宣言:
BigDecimal b1 = new BigDecimal( "4.1" );
BigDecimal b2 = new BigDecimal( "8.2" );

加法を実行:
BigDecimal b = b1.add( b2 );

結果の表示:
System.out.println( dF.format( b ) );
// 12.30000000000000000000


このように小数点以下の桁数を指定することができる.