2016.02.15

Javaプログラミング

無限大∞

無限大(Infinity)

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

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

	10.0/0.0=Infinity

Javaソースコード - 数値を0.0で割った結果を表示

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

CalcError3.java

001
002
003
004
005
006
007
008
009
010
011
public class CalcError3 {
	public static void main( String[] args ) {
		double a, b, c;
		
		a = 10.0;
		b =  0.0;
		c = a / b;

		System.out.println( a + "/" + b + "=" + c );
	}
}

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

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

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

C:\talavax\javasample>javac CalcError3.java

CalcError3を実行

C:\talavax\javasample>java CalcError3

実行結果

10.0/0.0=Infinity

10.0を0.0で割ると無限大になるので、計算結果が「Infinity」になります。

Javaソースコード - 無限大かどうかを判定

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

CalcError4.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
public class CalcError4 {
	public static void main( String[] args ) {
		double a, b, c;
		
		a = 10.0;
		b =  0.0;
		c = a / b;

		if ( true == Double.isInfinite( c ) )
			System.out.println( "計算結果が∞です" );
		else
			System.out.println( a + "/" + b + "=" + c );
	}
}

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

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

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

C:\talavax\javasample>javac CalcError4.java

CalcError4を実行

C:\talavax\javasample>java 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に限りなく近ければ、割り算を行わないようにしてください。プログラム言語の種類によってプログラムが停止することがあります。

Javaソースコード - 計算結果が無限大になるのを防ぐ

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

CalcError5.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
public class CalcError5 {
	public static void main( String[] args ) {
		double a, b, c, e;

		e = 0.00000001;	// ほぼ0と判定する値

		// 割り算		
		a = 10.0;
		b = 0.000000001;

		// 割り算してよいか判定
		if ( Math.abs( b ) < e )
			System.out.println( "割り算を中止しました!" );
		else {
			c = a / b;
			System.out.println( "c=" + a + "/" + b + "=" + c );
		}
	}
}

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

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

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

C:\talavax\javasample>javac CalcError5.java

CalcError5を実行

C:\talavax\javasample>java CalcError5

実行結果

割り算を中止しました!

割る数である変数bの絶対値0.000000001が、変数eの値.00000001より小さいので割り算を中止しています。

Math.absメソッド

public static int Math.abs( int a )
public static long Math.abs( long a )
public static float Math.abs( float a )
public static double Math.abs( double a )
public static int Math.abs( byte a )
public static int Math.abs( short a )
・引数aに指定した数値の絶対値を返します。

  パラメータ a : 絶対値を求めたい数値

  戻り値     aの絶対値を返します。
  戻りの変数型は、基本的に引数と同じ変数型と考えてよいです。

以上です。

関連コンテンツ

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

2022.09.10

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

2020.03.23

数値型の変数の最小値・最大値がプログラムで取得でします。

2016.01.20

数値として表せない計算結果はどうなる?

2016.02.15

各種データ型の変数に値を代入しない場合、変数の初期値は?

2024.01.18

各種データ型の変数にnullが代入できるかを確認しました。

2024.01.23

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

2020.03.23

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

2020.03.23

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

2022.10.25

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

2020.03.23

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

2022.12.13

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

2020.03.23

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

2020.03.23

条件式を判断して処理を分岐する方法を詳しく説明しています。

2023.03.20

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

2022.08.03

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

絶対値の意味と、Math.absメソッドの使い方をソースコードを使って詳しく解説しています。

2020.03.23

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

2020.03.23

割り算で「割り切れる」、「割り切れない」ってどういうこと?

単位ベクトルの意味と、単位ベクトルの求め方を解説しています。

2020.03.23

広告