数値の丸め処理

Java:
数値の丸め処理

どうやって:

Javaには数値を丸めるための複数の方法があります。Math.round()BigDecimalDecimalFormatを使ったクイックデモを紹介します。

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()は、丸めモードにあまりこだわらない一般的な操作に対する素早い方法です。

参照