小数第N桁切り捨て

小数第N桁切り捨て

はじめに

ここでは、指定した小数N桁で切り捨てを行う方法を紹介します。

12.34532の小数第3桁の切り捨て → 12.34

Javaでは、double型およびfloat型の値をint型またはlong型型キャストすると小数点以下が切り捨てになる仕様になっています。

ここでは、切捨てする数値の桁数を一時的に変えて、long型型キャストし、その後に元の桁数に戻す方法を紹介します。

例えば、1234.567を小数第2位で切り捨てを行うことを考えます。

この場合、1234.567を10倍して12345.67にした後に(long)12345.67で型キャストした整数値12345を求めます。

その後に10で割れば1234.5が求められます。

同様に、1234.567を小数第3位で切り捨てを行うことを考えます。

この場合、1234.567を100倍して123456.7にした後に(long)123456.7で型キャストした整数値123456を求めます。

その後に100で割れば1234.56が求められます。

このように、切り捨てを行う桁数をNとするとき、元の値に10の( N - 1 )乗を値を掛けた値をlong型型キャストし、その値を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だけ累乗した値を返す。

Javaソースコード

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

TruncN.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
public class TruncN {
	// aの小数第ketaを切り捨てるメソッド
	private static double truncn( double a, int keta )
	{
		long r;
		double p;

		p = Math.pow( 10.0,  (double)( keta - 1 ) );
		r =  (long)( a * p );
		return  (double)r / p;		
	}


	//メイン
	public static void main( String[] args ) {
		double a;

		// 切り捨てる値
		a = 12.34532;

		// 切り捨ての結果を表示
		System.out.println( a +"の小数第1桁の切り捨て: " + truncn( a, 1 ) );
		System.out.println( a +"の小数第2桁の切り捨て: " + truncn( a, 2 ) );
		System.out.println( a +"の小数第3桁の切り捨て: " + truncn( a, 3 ) );
		System.out.println( a +"の小数第4桁の切り捨て: " + truncn( a, 4 ) );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis TruncN.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac TruncN.java

実行

C:\talavax\javasample>java TruncN

出力結果

12.34532の小数第1桁の切り捨て: 12.0
12.34532の小数第2桁の切り捨て: 12.3
12.34532の小数第3桁の切り捨て: 12.34
12.34532の小数第4桁の切り捨て: 12.345

結果、指定桁数で切捨てられていることが分かります。

001
002
003
004
005
006
007
008
009
010
011
public class TruncN {
	// aの小数第ketaを切り捨てるメソッド
	private static double truncn( double a, int keta )
	{
		long r;
		double p;

		p = Math.pow( 10.0,  (double)( keta - 1 ) );
		r =  (long)( a * p );
		return  (double)r / p;		
	}

TruncNは、指定小数桁数で切り捨てするメソッドです。

aに切り捨てる値、ketaに切り捨てる小数桁数を渡すと結果を返すメソッドです。

以上です。

関連コンテンツ

小数点以下繰り上げ Math.ceilメソッドをJavaのソースコードを使って詳しく説明しています。

2020.03.23

小数点以下繰り下げ Math.floorメソッドをJavaのソースコードを使って詳しく説明しています。

2020.03.23

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

2020.03.23

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

プログラミング、ITに関する用語をまとめています。

2022.10.17

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

Javaのプログラムを作ってみませんか?プログラミングに必要なものの用意から実行までを説明しています。

2020.03.23

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

データの型を変換する方法を詳しく解説しています。例)int型 → long型

2015.11.01

自然数と整数って何が違う?

2020.03.23

累乗を計算するMath.powメソッドについて解説しています。

2016.04.20

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

広告