2019/08/04 公開
・値の比較
値の比較は、与えられた2つの値aとbを比較し、aとbが同じであるか、aがbよりも大きいか、aがbよりも小さいかを判定するものです。
比較は、関係演算子という記号を使って行います。比較した結果はtrueまたはfalseになるので、boolea型の変数に代入するか、if文/for文/while文の条件式として使います。
意味 | 演算子 | 使用例 | 使用例の結果 |
---|---|---|---|
より大きい | >(半角) | ( a > b ) | aがbより大きければ→true 以下であれば→false |
以上 | >=(半角) | ( a >= b ) | aがb以上であれば→true 小さければ→false |
より小さい | <(半角) | ( a < b ) | aがbより小さければ→true 以上であれば→false |
以下 | <=(半角) | ( a <= b ) | aがb以下であれば→true 大きければ→false |
等しい | ==(半角) | ( a == b ) | aとbが等しければ→true 等しくなければ→false |
等しくない | !=(半角) | ( a != b ) | aとbが等しくなければ→true 等しければ→false |
ここでの注意点は、double型やfloat型の浮動小数点数の2つの値が等しいかを判定する場合、計算したときの誤差の影響で正確に判定できないことです。
誤差についての詳細は、「double型のもつ誤差」を参考にしてください。
それでは、2つの値の比較を行うJavaソースコードで確認を行いたいと思います。以下の3つのJavaソースコードは、2つの値を比較するものです。
1つ目のソースコードは、int型の変数の値を比較するものです。
CompareValue1.java ← クリックしてダウンロードページに移動001: public class CompareValue1 { 002: public static void main( String[] args ) { 003: int a, b; 004: 005: // aとbの比較 006: a = 10; 007: b = 14; 008: 009: if ( a == b ) 010: System.out.println( a + "と" + b + "は等しい" ); 011: else { 012: if ( a > b ) 013: System.out.println( a + "は" + b + "より大きい" ); 014: else 015: System.out.println( a + "は" + b + "より小さい" ); 016: } 017: } 018: }
CompareValue1.javaの出力結果
10は14より小さい
正しい比較結果が出力されています。
2つ目のソースコードは、float型の変数の値を比較するものです。比較する2つの変数には割り算を行った結果を代入していいます。
CompareValue2.java ← クリックしてダウンロードページに移動001: public class CompareValue2 { 002: public static void main( String[] args ) { 003: float a, b; 004: 005: // aとbの比較 006: a = 25.0f / 0.3f; 007: b = 250.0f / 3.0f; 008: 009: if ( a == b ) 010: System.out.println( a + "と" + b + "は等しい" ); 011: else { 012: if ( a > b ) 013: System.out.println( a + "は" + b + "より大きい" ); 014: else 015: System.out.println( a + "は" + b + "より小さい" ); 016: } 017: } 018: }
CompareValue2.javaの出力結果
83.33333は83.333336より小さい
2つの変数に同じ計算結果が代入されるようにしていますが、計算誤差により2つの計算結果が等しいと判定されていません。
3つ目のソースコードは、float型の変数の値を比較するものです。2つ目のソースコードとの違いはfloat型の計算誤差を考慮していることです。float型のepsにゼロに近い値を代入し、2つ値の差の絶対値がeps未満であれば等しいと判定するようにしています。
CompareValue3.java ← クリックしてダウンロードページに移動001: public class CompareValue3 { 002: public static void main( String[] args ) { 003: float a, b; 004: float eps = 0.0001f; // 0に近い値 005: 006: // aとbの比較 007: a = 25.0f / 0.3f; 008: b = 250.0f / 3.0f; 009: 010: // 同じ値か比較(aとbの差が0に近いか) 011: if ( eps > Math.abs( a - b ) ) 012: System.out.println( a + "と" + b + "は等しい" ); 013: else { 014: if ( a > b ) 015: System.out.println( a + "は" + b + "より大きい" ); 016: else 017: System.out.println( a + "は" + b + "より小さい" ); 018: } 019: } 020: }
CompareValue3.javaの出力結果
83.33333と83.333336は等しい
2つの値が同じと判定されています。
■関連コンテンツ
Javaの変数 | Javaで扱う変数について解説 |
値のコンソール表示 | print()、println()とは? |
double型のもつ誤差 | double型のもつ誤差について |
if文条件による処理の分岐に使用するif文について解説 |
|
for文繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。 |
|
while文繰り返し処理に使用するwhile文について解説 |
|
計算結果の表示足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明 |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告