Java で double を小数点以下 2 桁に丸める方法

  1. Math.round(double*100.0)/100.0 を用いた double の小数点以下 2 桁への丸め
  2. BigDecimal を用いた double の小数点以下 2 桁への丸め
  3. DecimalFormat を用いた double の小数点以下 2 桁への丸め
  4. Apache Common Math を用いた double の小数点以下 2 桁への丸め

前回のチュートリアル記事では、Java で ArrayArrayList に変換する方法を、詳細な例を用いて様々なメソッドを用いて理解しました。今回は、シナリオ分析のさまざまな形式を通して、より多くのタイプの Java の使用法を見ていきます。

このチュートリアル記事では、Java を使った double を小数点以下 2 桁に丸める方法について説明します。ダブルの値を小数点以下 2 桁に丸めるには、Math.round()setScale() メソッドを使った BigDecimalDecimalFormatApache Common ライブラリの 4つの方法があります。

それぞれの方法について例を挙げて説明しましょう。

Math.round(double*100.0)/100.0 を用いた double の小数点以下 2 桁への丸め

Java では Math.round() メソッドを用いて、与えられた数を最も近い整数に丸めることができます。この記事では、double の小数点以下 2 桁への丸めを学ぶので、Math.round() のアプリケーションには (double*100.0)/100.0 が含まれることになる。

以下の例を見てみよう。

import java.util.*;
import java.lang.*;
import java.io.*;

public class Main 
{
  public static void main(String[] args)
  {
      double d = 7435.9876;
      double roundDbl = Math.round(d*100.0)/100.0;
      System.out.println("Rounded Double value: "+roundDbl);
  }
}

出力:

Rounded Double value: 7435.99

BigDecimal を用いた double の小数点以下 2 桁への丸め

このようにして、まず doubleBigDecimal に変換し、setScale() メソッドを使って変換した BigDecimal を小数点以下 2 桁に丸めることができます。以下の例を理解してみましょう。

import java.util.*;
import java.lang.*;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main 
{
  public static void main(String[] args)
  {
      double val1 = 4312.186462;
      System.out.println("Double value: "+val1);
    
      BigDecimal bd = new BigDecimal(val1).setScale(2, RoundingMode.HALF_UP);
      double val2 = bd.doubleValue();
      System.out.println("Rounded Double value: "+val2);
  }
}

出力:

Double value: 4312.186462
Rounded Double value: 4312.19

DecimalFormat を用いた double の小数点以下 2 桁への丸め

また、DecimalFormat を用いて double の値を小数点以下 2 桁に丸めることもできる。以下の例で説明しましょう。

import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.DecimalFormat;

public class Main 
{
  public static void main(String[] args)
  {
      double val1 = 6482.236789;
      System.out.println("Double value: "+val1);
    
      DecimalFormat df = new DecimalFormat("###.##");
      System.out.println("Rounded Double value (DecimalFormat): "+df.format(val1));
  }
}

出力:

Double value: 6482.236789
Rounded Double value: 6482.24

Apache Common Math を用いた double の小数点以下 2 桁への丸め

Java では、double を小数点以下 2 桁に丸めるために特殊な種類の数学ライブラリが使われており、それが Apache Common である。以下の例でその利用方法を説明しよう。

このライブラリの依存関係を Java プロジェクト内の xml ファイルに追加する必要があります。

<dependency>
    <groudId>org.apache.commons</groudId>
    <artifactId>commons-math3</artifactId> 
    <version>3.6.1</version>
</dependency>

それでは、double を小数点以下 2 桁に丸めるための apache ライブラリの実装を確認してみよう。

import java.util.*;
import java.lang.*;
import java.io.*;
import org.apache.commons.math3.util.Precision;

public class Main 
{
  public static void main(String[] args)
  {
      double input = 9476.2351;
      double roundedDbl = Precision.round(input,2);  
      System.out.println("Rounded Double value: "+roundedDbl);       
  }
}

出力:

Rounded Double value: 9476.24

単純な Java アプリケーションでは、最初の 3つの方法に従うことをお勧めします。

関連記事 - Java Double

  • Java で文字列をダブルに変換する方法
  • comments powered by Disqus