いとさんぽ

福岡移住生活を楽しむプログラマーのあれこれ

JavaのBigDecimalで四則演算と丸め処理

仕事でお金の計算を実装する機会がありネットで調べたのに、また同じような計算がめぐってきた時に「どうやるんだっけ?」と2度同じことを調べてしまったのですぐに思い出せるようにメモがてら残します。千円未満切り捨ては保険料かなにかを計算するときに使った気がします。数か月前なので記憶があやふや。

四則演算 メソッド
足し算 add()
引き算 subtract()
掛け算 multiply()
割り算 devide()


BigDecimal a = new BigDecimal("1.00");
BigDecimal b = new BigDecimal("2.00");
BigDecimal c = new BigDecimal("3.00");

// 足し算(1+2)
BigDecimal add = a.add(b);

// 引き算(1-2)
BigDecimal subtract = a.subtract(b);

// 掛け算(2*3)
BigDecimal multiply = b.multiply(c);

// 割り算(1/3)少数第3位で四捨五入
BigDecimal divide = a.divide(c, 2, BigDecimal.ROUND_HALF_UP);

System.out.println("足し算:" + add);
System.out.println("引き算:" + subtract);
System.out.println("掛け算:" + multiply);
System.out.println("割り算:" + divide);

// 千円未満切り捨て
BigDecimal target = new BigDecimal("1100");
BigDecimal thousand = new BigDecimal("1000");
BigDecimal result = target.divide(thousand)
			 .setScale(0, BigDecimal.ROUND_DOWN)
			 .multiply(thousand);
System.out.println("千円未満切り捨て:" + result);

効率のいい方法は他にあるかもしれませんがざっくり調べた方法でした。