JavaでBigDecimal型をint型に変換する方法

JavaでBigDecimal型をint型に変換する方法

JavaでBigDecimal型をint型に変換するにはintValueメソッドを使います。

BigDecimal bd = new BigDecimal("10");
int i = bd.intValue();

逆にint型をBigDecimal型に変換するにはvalueOfメソッドを使います。

int i = 10;
BigDecimal bd = BigDecimal.valueOf(i);

new BigDecimalをするよりvalueOfを勧めます。valueOfの中でキャッシュするようになっているので、かならずインスタンス生成されるわけではありません。

それに対してnew BigDecimalは必ずインスタンス生成されます。細かいところですが、Javaはメモリ意識しないといけませんね。

参考ページです。

BigDecimalをint型に変換する

会計はBigDecimal型を使用する

会計のシステムでは普通BigDecimalを使用します。

ただ、このBigDecimalもインスタンス生成方法によっては循環小数になったりするので注意です。

コンストラクタにdouble型を渡して割り算してみます。

BigDecimal bd1 = new BigDecimal(1058.1);
BigDecimal bd2 = new BigDecimal(10);
System.out.println(bd1.divide(bd2)); // 105.809999999999990905052982270717620849609375

これはBigDecimalのコンストラクタに以下が用意されているからです。

public BigDecimal(double val) {
  this(val,MathContext.UNLIMITED);
}

ということでBigDecimalのインスタンス生成時の引数はダブルクォーテーションで囲みましょう。

コメント

タイトルとURLをコピーしました