Java では、変数の前に double データ型を使用すると、小数点以下 15 桁を表します。ただし、ルピーやその他の単位を表すために、小数点以下 2 桁だけが必要な場合もあります。そこで、このセクションでは、 double と float を小数点第 2 位まで四捨五入する方法 適切な例と Java プログラムも付属しています。
ラドヤード・キプリングの言葉を言い換えると
Java では、double を小数点以下 2 桁で表示する次の 3 つの方法が提供されています。
- DecimalFormat ('0.00') の使用
- String.format() メソッドの使用 ('%.2f')
- 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