ホームページ >Java >&#&チュートリアル >Javaで倍精度浮動小数点数を小数点以下2桁に正しく四捨五入するにはどうすればよいですか?

Javaで倍精度浮動小数点数を小数点以下2桁に正しく四捨五入するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-30 07:35:16668ブラウズ

How to Correctly Round Doubles to Two Decimal Places in Java?

Java での小数点以下 2 桁への丸め

Java で浮動小数点数を特定の小数点以下の桁に丸めようとすると、多くの開発者が課題に遭遇します。これは、目的の出力が double のままでなければならない場合に特に当てはまります。

一般的なアプローチの 1 つは、次のコードに示すように Math.round() を利用することです。

class Round {
    public static void main(String[] args) {

        double a = 123.13698;
        double roundOff = Math.round(a * 100) / 100;
        
        System.out.println(roundOff);
    }
}

ただし、このアプローチは望ましい結果が得られないことがよくあります。 123.14 に丸める代わりに、123 が出力されます。

この問題を修正するには、4 行目に若干の変更が必要です。

double roundOff = Math.round(a * 100.0) / 100.0;

乗算係数に .0 を追加すると、結果はは、小数点以下 2 桁の double にキャストされます。これにより、最終結果にも小数点以下 2 桁が含まれることが保証されます。

あるいは、@Rufein が提案しているように、丸められた値を double にキャストすることもできます。

double roundOff = (double) Math.round(a * 100) / 100;

このアプローチでは、効果的に次の結果も生成されます。目的の出力 123.14 (小数点以下 2 桁)。

以上がJavaで倍精度浮動小数点数を小数点以下2桁に正しく四捨五入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。