Java:
数値の丸め処理
どうやって:
Javaには数値を丸めるための複数の方法があります。Math.round()
、BigDecimal
、DecimalFormat
を使ったクイックデモを紹介します。
public class RoundingDemo {
public static void main(String[] args) {
double num = 123.4567;
// Math.round()を使用
long roundedNum = Math.round(num);
System.out.println(roundedNum); // 出力: 123
// より細かい制御のためにBigDecimalを使用
BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP);
double roundedBigDecimal = bd.doubleValue();
System.out.println(roundedBigDecimal); // 出力: 123.46
// DecimalFormatの使用
DecimalFormat df = new DecimalFormat("#.##");
String formattedNum = df.format(num);
System.out.println(formattedNum); // 出力: 123.46
}
}
詳細な解説
歴史的に、数値を丸めることはアナログ計算に不可欠であり、効率性と正確性のためにデジタル計算に持ち越されています。浮動小数点演算からの丸め誤差のように、これは取るに足らない問題ではありません。それらは、たとえば、航空宇宙や金融アプリケーションで、計算を蓄積的に台無しにする可能性があります。
Math.round()
を超えて、BigDecimal
を使えば、スケールと丸めモードをより細かく制御できます。また、DecimalFormat
はテキスト出力のフォーマットの一部として数値を丸める必要がある場合に使用します。丸めの代替手段には、床関数、天井関数、切り捨てがあり、これらは通常、さまざまなMath
メソッドによって処理されます。
使用例に応じて、丸め戦略は変わるかもしれません。たとえば、精度が重要な金融計算にはBigDecimal
が最適です。一方、Math.round()
は、丸めモードにあまりこだわらない一般的な操作に対する素早い方法です。