お知らせ
2023.12.5(Tue)
目次
どうもこんにちは。三宮です。
JAVAの演算をする際、BigDecimal型を利用することが多々あります。
その中でも、double型を変換して使用することが多いですね。
今回は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 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演算マスターになりましょう!
それではまた。