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になりました。
■関連コンテンツ
計算結果の表示 | 四則演算(足し算/引き算/掛け算/割り算)について |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告
