Javaプログラミング学習サイト ゆるゆるプログラミング

2020/03/23 公開

・整数の割り算(除算)について

Javaの演算子'/'を使って整数(short,int)の割り算を行った結果と注意点などについて説明します。

Javaで整数どうしの割り算を行うと結果は整数になります。このとき小数点以下は切り捨てられます。

”DivisionSample5.java”は、1~10の整数を10で割った結果を表示するものです。

DivisionSample5.java ← クリックしてダウンロードページに移動
001:    public class DivisionSample5 {
002:    	public static void main( String[] args ) {
003:    		// 変数の定義
004:    		int a, b, ans;
005:    
006:    		// 1を10で割る
007:    		a = 1;
008:    		b = 10;
009:    		ans = a / b;
010:    		System.out.println( a + "/" + b + "=" + ans );
011:    
012:    		// 2を10で割る
013:    		a = 2;
014:    		b = 10;
015:    		ans = a / b;
016:    		System.out.println( a + "/" + b + "=" + ans );
017:    
018:    		// 3を10で割る
019:    		a = 3;
020:    		b = 10;
021:    		ans = a / b;
022:    		System.out.println( a + "/" + b + "=" + ans );
023:    
024:    		// 4を10で割る
025:    		a = 4;
026:    		b = 10;
027:    		ans = a / b;
028:    		System.out.println( a + "/" + b + "=" + ans );
029:    
030:    		// 5を10で割る
031:    		a = 5;
032:    		b = 10;
033:    		ans = a / b;
034:    		System.out.println( a + "/" + b + "=" + ans );
035:    
036:    		// 6を10で割る
037:    		a = 6;
038:    		b = 10;
039:    		ans = a / b;
040:    		System.out.println( a + "/" + b + "=" + ans );
041:    
042:    		// 7を10で割る
043:    		a = 7;
044:    		b = 10;
045:    		ans = a / b;
046:    		System.out.println( a + "/" + b + "=" + ans );
047:    
048:    		// 8を10で割る
049:    		a = 8;
050:    		b = 10;
051:    		ans = a / b;
052:    		System.out.println( a + "/" + b + "=" + ans );
053:    
054:    		// 9を10で割る
055:    		a = 9;
056:    		b = 10;
057:    		ans = a / b;
058:    		System.out.println( a + "/" + b + "=" + ans );
059:    
060:    		// 10を10で割る
061:    		a = 10;
062:    		b = 10;
063:    		ans = a / b;
064:    		System.out.println( a + "/" + b + "=" + ans );
065:    	}
066:    }

DivisionSample5.javaの出力結果


1/10=0
2/10=0
3/10=0
4/10=0
5/10=0
6/10=0
7/10=0
8/10=0
9/10=0
10/10=1

0から9を10で割った結果は0で、10を10で割った結果が1となり、割り算の結果が切り捨てられていることが分かります。

”DivisionSample6.java”は、short型の値300をshort型の値45で割り、int型変数に代入するするものです。

DivisionSample6.java ← クリックしてダウンロードページに移動
001:    public class DivisionSample6 {
002:    	public static void main( String[] args ) {
003:    		// 変数の定義
004:    		short a, b;
005:    		int   ans;
006:    
007:    		// 300を45で割る
008:    		a = 300;
009:    		b = 45;
010:    		ans = a / b;
011:    		System.out.println( a + "/" + b + "=" + ans );
012:    	}
013:    }

DivisionSample6.javaの出力結果


300/45=6

結果が6になりました。小数点を使って300/45の計算結果を表すと、6.666666…なので、この結果の小数点を切り捨てた6が整数の計算結果になります。

”DivisionSample7.java”は、int型の値300をint型の値45で割り、short型変数に代入するするものです。

DivisionSample7.java ← クリックしてダウンロードページに移動
001:    public class DivisionSample7 {
002:    	public static void main( String[] args ) {
003:    		// 変数の定義
004:    		int   a, b;
005:    		short ans;
006:    
007:    		// 300を45で割る
008:    		a = 300;
009:    		b = 45;
010:    		ans = a / b;	// ← コンパイルエラー
011:    		System.out.println( a + "/" + b + "=" + ans );
012:    	}
013:    }

このソースは、コンパイルで失敗するので実行できません。

コンパイル時に、'エラー: 不適合な型: 精度が失われる可能性があるintからshortへの変換'というメッセージが表示されます。

これは変数の値の範囲によるもので、精度の高い整数変数(持てる値の範囲が広い)から精度の低い整数変数(持てる値の範囲が狭い)に代入できないことで起こるエラーです。ちなみに、short型の範囲は-32768~32767、int型の範囲は-2147483648~2147483647です。

int型どうしの結果を計算結果をshort型に代入する場合は、以下のソースのように計算結果をshort型型キャストします。

DivisionSample8.java ← クリックしてダウンロードページに移動
001:    public class DivisionSample8 {
002:    	public static void main( String[] args ) {
003:    		// 変数の定義
004:    		int   a, b;
005:    		short ans;
006:    
007:    		// 300を45で割る
008:    		a = 300;
009:    		b = 45;
010:    		ans = (short)( a / b );	// ← shortに型キャスト
011:    		System.out.println( a + "/" + b + "=" + ans );
012:    	}
013:    }

DivisionSample8.javaの出力結果


300/45=6

結果が6になりました。

■関連コンテンツ

計算結果の表示 四則演算(足し算/引き算/掛け算/割り算)について

■新着情報

2021.06.18 変数の初期値 変数に値を代入しないで計算
2021.05.28 短針と長針の角度 短針と長針の角度は?
2021.05.19 各位(くらい)を求める 1の位の値は?10の位は?

■広告

 

 

 

 

 

 

 

Topへ