2016.02.15
Javaプログラミング
無限大(Infinity)
計算の結果が∞となるとき、その値をInfinityと表現します。
具体的には、値を0で割るとInfinityが返ります。
10.0/0.0=Infinity
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ソースコード - 無限大かどうかを判定
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
実行結果
割り算を中止しました!
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の絶対値を返します。 戻りの変数型は、基本的に引数と同じ変数型と考えてよいです。
以上です。
関連コンテンツ
割り算で「割り切れる」、「割り切れない」ってどういうこと?