2020.03.23

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

はじめに

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

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

Javaソースコード - 1~10の整数を10で割った結果

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

DivisionSample5.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
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
public class DivisionSample5 {
	public static void main( String[] args ) {
		// 変数の定義
		int a, b, ans;

		// 1を10で割る
		a = 1;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 2を10で割る
		a = 2;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 3を10で割る
		a = 3;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 4を10で割る
		a = 4;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 5を10で割る
		a = 5;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 6を10で割る
		a = 6;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 7を10で割る
		a = 7;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 8を10で割る
		a = 8;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 9を10で割る
		a = 9;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );

		// 10を10で割る
		a = 10;
		b = 10;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );
	}
}

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

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

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

C:\talavax\javasample>javac DivisionSample5.java

実行

C:\talavax\javasample>java DivisionSample5

出力結果

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となり、割り算の結果が切り捨てられていることが分かります。

Javaソースコード - 300/45をshort型で計算した結果をint型変数に代入

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

DivisionSample6.java

001
002
003
004
005
006
007
008
009
010
011
012
013
public class DivisionSample6 {
	public static void main( String[] args ) {
		// 変数の定義
		short a, b;
		int   ans;

		// 300を45で割る
		a = 300;
		b = 45;
		ans = a / b;
		System.out.println( a + "/" + b + "=" + ans );
	}
}

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

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

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

C:\talavax\javasample>javac DivisionSample6.java

実行

C:\talavax\javasample>java DivisionSample6

出力結果

300/45=6

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

Javaソースコード - 300/45をint型で計算した結果をshort型変数に代入

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

DivisionSample7.java

001
002
003
004
005
006
007
008
009
010
011
012
013
public class DivisionSample7 {
	public static void main( String[] args ) {
		// 変数の定義
		int   a, b;
		short ans;

		// 300を45で割る
		a = 300;
		b = 45;
		ans = a / b;	// ← コンパイルエラー
		System.out.println( a + "/" + b + "=" + ans );
	}
}

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

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

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

C:\talavax\javasample>javac DivisionSample7.java

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

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

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

Javaソースコード - 300/45をint型で計算した結果をshort型に型キャストして代入

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

DivisionSample8.java

001
002
003
004
005
006
007
008
009
010
011
012
013
public class DivisionSample8 {
	public static void main( String[] args ) {
		// 変数の定義
		int   a, b;
		short ans;

		// 300を45で割る
		a = 300;
		b = 45;
		ans =  (short)( a / b );	// ← shortに型キャスト
		System.out.println( a + "/" + b + "=" + ans );
	}
}

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

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

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

C:\talavax\javasample>javac DivisionSample8.java

実行

C:\talavax\javasample>java DivisionSample8

出力結果

300/45=6

結果が6になりました。

関連コンテンツ

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

2020.03.23

Javaの演算子'/'を使って割り算を行った結果と注意点などについて説明。

2020.03.23

1.0をxで割る計算式で、計算結果が∞(無限大)になるxを求めます。

2024.05.19

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2020.03.23

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

2022.08.03

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

2020.03.23

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

2015.11.01

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

2020.03.23

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

2022.09.10

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

2022.07.07

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

2020.03.23

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

2015.11.29

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

2021.05.18

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

2021.05.18

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

2020.03.23

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

2022.10.25

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

2016.12.16

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

2022.07.27

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

2022.10.17

広告