logo

Javaで倍精度浮動小数点数を小数点第2位まで四捨五入するにはどうすればよいですか?

Java では、変数の前に double データ型を使用すると、小数点以下 15 桁を表します。ただし、ルピーやその他の単位を表すために、小数点以下 2 桁だけが必要な場合もあります。そこで、このセクションでは、 double と float を小数点第 2 位まで四捨五入する方法 適切な例と Java プログラムも付属しています。

ラドヤード・キプリングの言葉を言い換えると
Java で Double および float を小数点第 2 位まで四捨五入する方法

Java では、double を小数点以下 2 桁で表示する次の 3 つの方法が提供されています。

  1. DecimalFormat ('0.00') の使用
  2. String.format() メソッドの使用 ('%.2f')
  3. BigDecimal の使用

上記の方法を 1 つずつ説明していきます。

DecimalFormat の使用

ジャワ 10 進形式 これは、10 進数の書式設定に使用される NumberFormat クラスの具象サブクラスです。クラスが提供するのは、 setRoundingMode() 小数点以下第 2 位までの double 数値を表示するメソッド。

構文:

 public void setRoundingMode(RoundingMode roundingMode) 

丸めモードをパラメータとして受け入れ、その setRoundingMode() メソッドをオーバーライドします。 数値形式 クラス。投げる NullPointerException RoundingMode を指定しない場合。次の表では、さまざまな丸めモードについて説明します。

数字を入れる シーリング ハーフアップ ハーフダウン ハーフイーブン 不要
5.5 6 5 6 5 6 5 6 ArithmeticException をスローする
2.5 3 2 3 2 3 2 2 ArithmeticException をスローする
1.6 2 1 2 1 2 2 2 ArithmeticException をスローする
1.1 2 1 2 1 1 1 1 ArithmeticException をスローする
1.0 1 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 ArithmeticException をスローする
-1.6 -2 -1 -1 -2 -2 -2 -2 ArithmeticException をスローする
-2.5 -3 -2 -2 -3 -3 -2 -2 ArithmeticException をスローする
-5.5 -6 -5 -5 -6 -6 -5 -6 ArithmeticException をスローする

DecimalFormat クラスの別のメソッドを使用しました。 フォーマット() 方法。文字列をフォーマットして文字列を生成します。

構文:

 public StringBuffer format(double number, StringBuffer result, FieldPosition fieldPosition) 

このメソッドは、数値、結果、位置の 3 つのパラメーターを受け取ります。ただし、最後の 2 つのパラメータはオプションです。フォーマットされた数値文字列を返します。メソッドはスローします 算術例外 もし 丸めモード に設定されています 不要。

TwoDecimalPlace1.java

文字列から整数への変換
 import java.math.RoundingMode; import java.text.DecimalFormat; public class TwoDecimalPlace1 { //constructor of the DecimalFormat class private static final DecimalFormat decfor = new DecimalFormat('0.00'); public static void main(String args[]) { //defining a number of type double double num = 123.9876543567; System.out.println('Double Number: ' + num); System.out.println('Double Number: ' + decfor.format(num)); //123.99 //DecimalFormat, default is RoundingMode.HALF_EVEN decfor.setRoundingMode(RoundingMode.DOWN); System.out.println('
Before Rounding: ' + decfor.format(num)); //123.98 decfor.setRoundingMode(RoundingMode.UP); System.out.println('After Rounding Up: ' + decfor.format(num)); //123.99 } } 

出力:

 Double Number: 123.9876543567 Double Number: 123.99 Before Rounding: 123.98 After Rounding Up: 123.99 

String.format() メソッドの使用

Java には、数値をフォーマットする format() メソッドも用意されています。これは String クラスに属します。このメソッドを使用すると、任意の数値や文字列を適切にフォーマットできます。

小数点以下 2 桁までの数値を変更するには、次を使用します。 %.2f 数値の書式を設定します。 String.format() メソッドでは数値を四捨五入することができず、常に半分を切り上げることに注意してください。

構文:

 public static String format(String format, Object... args) 

このメソッドは次の 2 つのパラメータを受け入れます。

フォーマット: これは、必要なフォーマットされた文字列です。

引数: これらは、書式文字列内の書式指定子によって参照される引数です。

フォーマットされた文字列を返します。投げる 不正なフォーマット例外 フォーマット文字列に不正な構文が含まれている場合。それも投げます NullPointerException 形式を null として指定した場合。

TwoDecimalPlace2.java

 public class TwoDecimalPlace2 { public static void main(String args[]) { //defining a number of type double double num = 10.98765432167; System.out.println('Double Number: ' + num); //use either of the following two statements for two decimal places both gives the same result System.out.println('Double Number: ' + String.format('%.2f', num)); System.out.format('Double Number: %.2f', num); } } 

出力:

 Double Number: 10.98765432167 Double Number: 10.99 Double Number: 10.99 

BigDecimal の使用

Java BigDecimal クラスを使用して、小数点第 2 位までの数値を表示することもできます。に属します java.math.BigDecimal パッケージ。 Number クラスを拡張し、 匹敵します インターフェース。

b+ ツリー

このクラスは setScale() メソッドを提供します。構文は次のとおりです。

構文:

Javaの文字列に等しい
 setScale(int newScale, RoundingMode roundingMode) 

このメソッドは 2 つのパラメータを受け入れます。

新しいスケール: 返される BigDecimal 値のスケール。

丸めモード: 適用する丸めモード。

スケールが指定された値である BigDecimal を返します。スケールなしの値は、全体の値を維持するために、この BigDecimal のスケールなしの値を適切な 10 の累乗で乗算または除算することによって決定されます。

メソッドは 算術例外 もし 丸めモード に設定されています 不要 。 RoundingMode は、上で説明した RoundingMode を提供する列挙型です。

このプログラムで使用したもう 1 つの方法は、 BigDecimal.doubleValue()。 BigDecimal を ダブル 番号。例を見てみましょう。

TwoDecimalPlace3.java

 import java.math.BigDecimal; import java.math.RoundingMode; public class TwoDecimalPlace3 { public static void main(String args[]) { //defining a number of type double double num = 12.4565652239; System.out.println('Double Number: ' + num); BigDecimal bd = new BigDecimal(num).setScale(2, RoundingMode.HALF_UP); double newNum = bd.doubleValue(); System.out.println('Up to two decimal places: ' + newNum); } } 

出力:

 Double Number: 12.4565652239 Up to two decimal places: 12.46