Java で Double を切り捨てる

Rupam Yadav 2023年10月12日
  1. Java で DecimalFormat を使用して Double を切り捨てる
  2. Java で BigDecimal を使用して Double を切り捨てる
  3. Java で Apache CommonLibrary を使用して 10 進数を切り捨てる
  4. Java で java.lang.Math を使用して小数を切り捨てる
Java で Double を切り捨てる

この記事では、Java で数値を小数点以下 n 桁に切り捨てまたは四捨五入する方法について説明します。Java には、double と float の 10 進値を格納するための 2つのプリミティブ型が用意されています。正確な値または四捨五入には、BigDecimal クラスを使用することをお勧めします。

Java で DecimalFormat を使用して Double を切り捨てる

DecimalFormatNumberFormat のサブクラスであり、提供されているフォーマットパターンを使用して 10 進数をフォーマットできます。以下のコードでは、適切なフォーマットパターンを渡す DecimalFormat のオブジェクトを作成しました。decimatFormat オブジェクトで format() メソッドを呼び出し、二重変数 d をパラメーターとして渡すことができます。

format() メソッドは、出力に示されているように、切り捨てられた文字列を返します。

import java.text.DecimalFormat;
public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    String pattern = "#.###";
    DecimalFormat decimalFormat = new DecimalFormat(pattern);
    String formattedDouble = decimalFormat.format(d);
    System.out.println("Formatted double d = " + formattedDouble);
  }
}

出力:

Formatted double d = 9.457

Java で BigDecimal を使用して Double を切り捨てる

Java では、BigDecimal は不変の任意精度の符号付き 10 進数です。スケールと精度を制御できます。文字列として変換された double を渡す BigDecimal オブジェクトを作成し、概算値の表現に関する問題を防ぎます。

次に、この BigDecimal オブジェクト bdsetScale(int newScale, RoundingMode roundingMode) メソッドを呼び出します。これは、返される BigDecimal のスケールと、適用する丸めモードの 2つの引数を取ります。モード RoundingMode.FLOOR は負の無限大に向かって丸められます。

public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    BigDecimal bd = new BigDecimal(String.valueOf(d));
    BigDecimal rounded = bd.setScale(2, RoundingMode.FLOOR);
    System.out.println("BigDecimal rounded off : " + rounded);
  }
}

出力:

BigDecimal rounded off : 9.45

Java で Apache CommonLibrary を使用して 10 進数を切り捨てる

以下に Maven の依存関係が示されているこのライブラリでも同じことができます。

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-math3</artifactId>
    <version>3.5</version>
</dependency>

このライブラリの Precision.round() メソッドを使用して、10 進数をフォーマットできます。このメソッドは 2つの引数を取ります。1つはフォーマットおよびスケーリングする 10 進変数です。小数点以下 4 桁が必要です。したがって、それが私たちに必要な規模です。出力には、10 進数の数字が切り捨てられていることが示されています。

import org.apache.commons.math3.util.Precision;
public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    double doubleP = Precision.round(d, 4);
    System.out.println("Precision rounded off : " + doubleP);
  }
}

出力:

Precision rounded off : 9.4569

Java で java.lang.Math を使用して小数を切り捨てる

これは、Java で 10 進数を四捨五入するもう 1つの方法です。メソッド Math.pow() は、10nで乗算および除算することにより、n の小数点以下の桁数を制御します。このメソッドを使用して、基数 10 と累乗 3 の 2つの引数を取る二重変数 scale を作成します。

Java の Math.round() は、数値を最も近い整数に丸めるために使用されます。これは、数値に 1/2 を加算し、結果の下限を話し、結果を整数データ型にキャストすることによって行われます。この方法は、値が誤って切り捨てられることがあるため、お勧めしません。

public class DecimalFormatting {
  public static void main(String args[]) {
    double d = 9.4568982982989;
    double scale = Math.pow(10, 3);
    double doubleM1 = Math.round(d * scale) / scale;
    System.out.println("Math1 Rounded off: " + doubleM1);
  }
}

出力:

Math Rounded off: 9.45
Math1 Rounded off: 9.457
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java Double