ゆるゆるプログラミング

・無限大 Infinity

計算の結果が∞となるとき、その値をInfinityと表現します。

具体的には、値を0で割るとInfinityが返ります。

以下のJavaのソースコードは、値を0.0で割った結果を表示するものです。

CalcError3.java ← クリックしてダウンロードページに移動
001:    public class CalcError3 {
002:    	public static void main( String[] args ) {
003:    		double a, b, c;
004:    		
005:    		a = 10.0;
006:    		b =  0.0;
007:    		c = a / b;
008:    
009:    		System.out.println( a + "/" + b + "=" + c );
010:    	}
011:    }

CalcError3の出力結果

10.0/0.0=Infinity

次のJavaのソースコードは、計算結果が無限大(Infinity)かどうかを判定するメソッドを使ったサンプルです。

CalcError4.java ← クリックしてダウンロードページに移動
001:    public class CalcError4 {
002:    	public static void main( String[] args ) {
003:    		double a, b, c;
004:    		
005:    		a = 10.0;
006:    		b =  0.0;
007:    		c = a / b;
008:    
009:    		if ( true == Double.isInfinite( c ) )
010:    			System.out.println( "計算結果が∞です" );
011:    		else
012:    			System.out.println( a + "/" + b + "=" + c );
013:    	}
014:    }

CalcError4の出力結果

計算結果が∞です

以下が、無限大かどうか判定するメソッドです。

Double.isInfiniteメソッド

public static boolean Double.isInfinite( double a )
■引数aで指定した値が無限大(∞)であるかを判定

  パラメータ a : double型の数値

  戻り値     Infinityであればtrue、Infinityでなければfalse

Float.isInfiniteメソッド

public static boolean Float.isInfinite( float a )
■引数aで指定した値が無限大(∞)であるかを判定

  パラメータ a : float型の数値

  戻り値     Infinityであればtrue、Infinityでなければfalse

ここでは、値を0で割ると結果が無限大であるかを判定する内容を説明していますが、実際のプログラムを作るときには、割る値の絶対値が0に限りなく近ければ、割り算を行わないようにしてください。プログラム言語の種類によってプログラムが停止することがあります。

以下のソースを見てください。double型変数eに0と判定するための値を代入し、割る値の絶対値がeより小さい場合に割り算を行わないようにしています。eの値は作成するプログラムの内容によって変えてください。また、以下の例はdouble型割り算なので変数eで判定をしていますが、整数型の場合は割る値が0であれば計算しないようにしてください。具体的に、その条件式は( 0 == 割る値)で、この条件式がtrueのときは割り算をしないでください。

CalcError5.java ← クリックしてダウンロードページに移動
001:    public class CalcError5 {
002:    	public static void main( String[] args ) {
003:    		double a, b, c, e;
004:    
005:    		e = 0.00000001;	// ほぼ0と判定する値
006:    
007:    		// 割り算		
008:    		a = 10.0;
009:    		b = 0.000000001;
010:    
011:    		// 割り算してよいか判定
012:    		if ( Math.abs( b ) < e )
013:    			System.out.println( "割り算を中止しました!" );
014:    		else {
015:    			c = a / b;
016:    			System.out.println( "c=" + a + "/" + b + "=" + c );
017:    		}
018:    	}
019:    }

■関連コンテンツ

変数について Javaで扱う変数について解説
計算結果の表示 四則演算(足し算/引き算/掛け算/割り算)について
非数値 NaN 非数値(数値ではない値)について

■新着情報

2020.05.07 サイコロの出目確率 サイコロの目のでる確率は?
2020.04.22 現在日時をミリ秒で取得 現在日時をミリ秒数で取得
2020.04.22 日時 日時の操作について
2020.04.22 時間の単位変換 1日、1時間は何ミリ秒?

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

Topへ