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

2019/08/04 公開

・値の比較

値の比較は、与えられた2つの値abを比較し、abが同じであるか、abよりも大きいか、abよりも小さいかを判定するものです。

比較は、関係演算子という記号を使って行います。比較した結果は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文

条件による処理の分岐に使用するif文について解説

繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

繰り返し処理に使用するwhile文について解説-画像

while文

繰り返し処理に使用するwhile文について解説

四則演算(足し算/引き算/掛け算/割り算)について-画像

計算結果の表示

足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

Topへ