ゆるゆるプログラミング

・小数第N桁四捨五入

ここでは、指定した小数桁で四捨五入を行う方法を紹介します。

Javaには、小数第1桁を四捨五入するMath.roundメソッドが用意されています。このメソッドは、小数第1桁で四捨五入して整数の値を求めるメソッドです。四捨五入する小数桁数を指定することはできません。

小数点以下四捨五入 Math.roundメソッド

public static int Math.round( float a )
public static int Math.round( double a )
■引数aで指定した数値に最も近い整数値を返します。

  パラメータ a : 四捨五入たい数値

  戻り値     aを四捨五入した整数値を返します。

ここでは、四捨五入する数値の桁数を一時的に変えて、Math.roundで四捨五入を行い、その後に元の桁数に戻す方法を紹介します。

例えば、1234.567を小数第2位で四捨五入を行うことを考えます。この場合、1234.567を10倍して12345.67にした後にMath.round( 12345.67 )で四捨五入した整数値12346を求めます。その後に10で割れば1234.6が求められます。

同様に、1234.567を小数第3位で四捨五入を行うことを考えます。この場合、1234.567を100倍して123456.7にした後にMath.round( 123456.7 )で四捨五入した整数値123457を求めます。その後に100で割れば1234.57が求められます。

このように、四捨五入を行う桁数をNとするとき、元の値に10の( N - 1 )乗を値を掛けた値をMath.roundに渡し、その値を10の( N - 1 )乗で割ることで指定桁数の四捨五入を求めることができます。

10の( N - 1 )乗は以下の累乗メソッドにより、簡単に計算することができます。10の( N - 1 )乗は、Math.pow( 10.0, (double)( N - 1 ) )で計算できます。

Math.powメソッド

public static double Math.pow( double a, double b )
■aのb乗を返します。

  パラメータ a : 基数の値。
        b : 指数の値。

  戻り値     aをbだけ累乗した値を返す。

以下は、小数点第N点で四捨五入を行うJavaソースコードの例です。

RoundN.java ← クリックしてダウンロードページに移動
001:    public class RoundN {
002:    	// aの小数第ketaを四捨五入するメソッド
003:    	private static double roundn( double a, int keta )
004:    	{
005:    		long r;
006:    		double p;
007:    
008:    		p = Math.pow( 10.0, (double)( keta - 1 ) );
009:    		r = Math.round( a * p );
010:    		return (double)r / p;		
011:    	}
012:    
013:    
014:    	//メイン
015:    	public static void main( String[] args ) {
016:    		double a;
017:    
018:    		// 四捨五入される値
019:    		a = 12.34562;
020:    
021:    		// 四捨五入の結果を表示
022:    		System.out.println( a +"の小数第1桁を四捨五入: " + roundn( a, 1 ) );
023:    		System.out.println( a +"の小数第2桁を四捨五入: " + roundn( a, 2 ) );
024:    		System.out.println( a +"の小数第3桁を四捨五入: " + roundn( a, 3 ) );
025:    		System.out.println( a +"の小数第4桁を四捨五入: " + roundn( a, 4 ) );
026:    	}
027:    }

RoundN.javaの出力結果

12.34532の小数第1桁を四捨五入: 12.0
12.34532の小数第2桁を四捨五入: 12.3
12.34532の小数第3桁を四捨五入: 12.35
12.34532の小数第4桁を四捨五入: 12.346

結果、指定桁数での四捨五入に成功していることが分かります。

001:    public class RoundN {
002:    	// aの小数第ketaを四捨五入するメソッド
003:    	private static double roundn( double a, int keta )
004:    	{
005:    		long r;
006:    		double p;
007:    
008:    		p = Math.pow( 10.0, (double)( keta - 1 ) );
009:    		r = Math.round( a * p );
010:    		return (double)r / p;		
011:    	}

RoundNは、指定小数桁数で四捨五入するメソッドです。aに四捨五入する値、ketaに四捨五入する小数桁数を渡すと結果を返すメソッドです。

■関連コンテンツ

小数点以下四捨五入 Math.roundの使い方について解説

■新着情報

2020.09.03 お札とコインの数 必要なお札と硬貨の枚数?
2020.08.27 ポーカーの役判定 ポーカーの役を判定
2020.08.25 ゾロ目の出る確率 サイコロの目のでる確率は?
2020.08.24 文字列配列をint配列に変換 String[]→int[]
2020.08.24 文字列配列をdouble配列に変換 String[]→double[]
2020.08.19 キーボード入力値を配列に格納 キーボード入力→配列
2020.08.19 キーボード入力値をリストに格納 キーボード入力→リスト
2020.08.19 キーボード入力 ScannerクラスとSystem.inを使用

■広告

フィギュア予約最大25%OFF+ポイント5%還元!ホビーサーチ

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ