JAVA型変換 double型をBigDecimal型に変換する方法

どうもこんにちは。三宮です。

JAVAの演算をする際、BigDecimal型を利用することが多々あります。
その中でも、double型を変換して使用することが多いですね。

今回はdouble型をBigDecimal型に変換する方法と、基本的な使い方をお伝えします。

double型をBigDecimalに変換

new BigDecimalを使用すると、期待通りの結果が得られないことがあります。
変換する際はvalueOfを使用しましょう。

double value1 = 0.35d;

// new BigDecimalを使用すると期待通りにいかない
// 結果:0.34999999999999997779553950749686919152736663818359375
BigDecimal newValue1 = new BigDecimal(value1);

// valueOfを使用する
// 結果:0.35
BigDecimal newValue2 = BigDecimal.valueOf(value2);

BigDecimalの演算方法

加算、減算、積算、除算の方法は下記になります。

BigDecimal value1 = BigDecimal.valueOf(0.66);
BigDecimal value2 = BigDecimal.valueOf(0.2);

// =================
// 加算:add
// =================
// 結果:0.86
BigDecimal result1 = value1.add(value2);

// =================
// 減算:subtract
// =================
// 結果:0.46
BigDecimal result2 = value1.subtract(value2);

// =================
// 積算:multiply
// =================
// 結果:0.132
BigDecimal result3 = value1.multiply(value2);

// =================
// 除算:divide
// =================
// 結果:3.3
BigDecimal result4 = value1.divide(value2);

丸め方法

小数点の丸め方法は下記になります。

ROUND_HALF_UP 四捨五入
ROUND_HALF_DOWN 切り捨て
ROUND_UP 切り上げ
ROUND_UNNECESSARY 丸めない
ROUND_CEILING 正の無限大に近づくように丸める
ROUND_DOWN ゼロに近づくように丸める
ROUND_FLOOR 負の無限大に近づくように丸める
ROUND_HALF_EVEN 末尾が偶数のほうに丸める

四捨五入、切り上げ、切り捨ての例

よく使用する3つの例をご紹介します。

// =======================
// 四捨五入
// =======================
// 結果:0.4
BigDecimal resultValue = BigDecimal.valueOf(0.35).setScale(1,  BigDecimal.ROUND_HALF_UP);

// =======================
// 切り上げ
// =======================
// 結果:0.36
BigDecimal resultValue = BigDecimal.valueOf(0.354).setScale(2,  BigDecimal.ROUND_UP);

// =======================
// 切り捨て
// =======================
// 結果:0.459
BigDecimal resultValue = BigDecimal.valueOf(0.4599).setScale(3,  BigDecimal.ROUND_DOWN);

最後に

BigDecimal型は細かい値を計算することができるので、お金の計算に使用することが多いですね。
丸めるタイミングによってずれが生じてしまうので、要件にあった製造を行っていきましょう。

BigDecimal型を使いこなして、Java演算マスターになりましょう!

それではまた。

記事をシェア
MOST VIEWED ARTICLES