はじめに
Java言語では、isFinite()
メソッドを使用して、渡された倍精度浮動小数点数値が有限値であるかどうかをチェックします。渡された倍精度浮動小数点数値が有限値を保持している場合は true
のブール値を返し、NaNおよび無限大の値の場合は false
を返します。この実験では、Javaの isFinite()
メソッドの使い方を学びます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Java言語では、isFinite()
メソッドを使用して、渡された倍精度浮動小数点数値が有限値であるかどうかをチェックします。渡された倍精度浮動小数点数値が有限値を保持している場合は true
のブール値を返し、NaNおよび無限大の値の場合は false
を返します。この実験では、Javaの isFinite()
メソッドの使い方を学びます。
システムにJavaがまだインストールされていない場合は、最新バージョンをダウンロードしてインストールします。次のコマンドを実行してインストールを確認します。
java -version
~/project
ディレクトリに、DoubleIsFiniteDemo
という名前の新しいJavaクラスを作成します。
cd ~/project
touch DoubleIsFiniteDemo.java
このステップでは、渡された倍精度浮動小数点数値が有限値であるかどうかをチェックするために、isFinite()
メソッドを使用してJavaコードを記述します。次のコードをコピーして DoubleIsFiniteDemo.java
に貼り付けます。
public class DoubleIsFiniteDemo {
public static void main(String[] args) {
double d1 = 100.0;
double d2 = Double.POSITIVE_INFINITY;
double d3 = Double.NEGATIVE_INFINITY;
double d4 = Double.NaN;
boolean b1 = Double.isFinite(d1);
boolean b2 = Double.isFinite(d2);
boolean b3 = Double.isFinite(d3);
boolean b4 = Double.isFinite(d4);
System.out.println("Is d1 finite? " + b1);
System.out.println("Is d2 finite? " + b2);
System.out.println("Is d3 finite? " + b3);
System.out.println("Is d4 finite? " + b4);
}
}
上記のコードは、それぞれ有限値、正の無限大、負の無限大、NaN値を持つ4つの倍精度浮動小数点数変数 d1
、d2
、d3
、および d4
を宣言します。その後、各変数が有限であるかどうかをチェックするために isFinite()
メソッドを使用します。
次のコマンドを使用してコードをコンパイルします。
javac DoubleIsFiniteDemo.java
コンパイル後、次のコマンドを使用してコードを実行できます。
java DoubleIsFiniteDemo
プログラムの出力は次のようになるはずです。
Is d1 finite? true
Is d2 finite? false
Is d3 finite? false
Is d4 finite? false
このステップでは、異なる値をテストするためにプログラムをカスタマイズできます。好きなテキストエディタで DoubleIsFiniteDemo.java
を開き、倍精度浮動小数点数変数に割り当てられている値を変更します。たとえば:
public class DoubleIsFiniteDemo {
public static void main(String[] args) {
double d1 = 1.23;
double d2 = 4.56;
double d3 = Double.NEGATIVE_INFINITY;
double d4 = Double.NaN;
boolean b1 = Double.isFinite(d1);
boolean b2 = Double.isFinite(d2);
boolean b3 = Double.isFinite(d3);
boolean b4 = Double.isFinite(d4);
if (b1) {
System.out.println("d1 is a finite double value.");
} else {
System.out.println("d1 is not a finite double value.");
}
if (b2) {
System.out.println("d2 is a finite double value.");
} else {
System.out.println("d2 is not a finite double value.");
}
if (b3) {
System.out.println("d3 is a finite double value.");
} else {
System.out.println("d3 is not a finite double value.");
}
if (b4) {
System.out.println("d4 is a finite double value.");
} else {
System.out.println("d4 is not a finite double value.");
}
}
}
次のコマンドを使用してコードを再度コンパイルします。
javac DoubleIsFiniteDemo.java
コンパイル後、次のコマンドを使用してカスタマイズされたプログラムを実行できます。
java DoubleIsFiniteDemo
入力した値に応じて、プログラムはそれに応じた結果を出力します。
isFinite()
メソッドを使用するこのステップでは、倍精度浮動小数点数値を入力として受け取り、isFinite()
メソッドを使用してそれが有限であるかどうかを表示する、printIsFinite()
と呼ばれるユーザ定義メソッドを作成します。
DoubleIsFiniteDemo
クラスの内部に次のメソッドを追加します。
public static void printIsFinite(double d) {
if (Double.isFinite(d)) {
System.out.println(d + " is a finite double value.");
} else {
System.out.println(d + " is not a finite double value.");
}
}
次に、main()
メソッドを次のように変更します。
public static void main(String[] args) {
double d1 = 1.23;
double d2 = 4.56;
double d3 = Double.NEGATIVE_INFINITY;
double d4 = Double.NaN;
printIsFinite(d1);
printIsFinite(d2);
printIsFinite(d3);
printIsFinite(d4);
}
メインメソッドは4つの倍精度浮動小数点数変数のそれぞれを printIsFinite()
メソッドに渡します。その後、printIsFinite()
メソッドは値が有限であるかどうかをチェックし、それに応じた結果を表示します。
次のコマンドを使用してコードを再度コンパイルします。
javac DoubleIsFiniteDemo.java
コンパイル後、次のコマンドを使用してプログラムを実行できます。
java DoubleIsFiniteDemo
プログラムの出力は次のようになるはずです。
1.23 is a finite double value.
4.56 is a finite double value.
-Infinity is not a finite double value.
NaN is not a finite double value.
このステップでは、isFinite()
メソッドがどのように機能するかを見るために、境界値を使ってJavaコードをテストします。
main()
メソッドを次のように変更します。
public static void main(String[] args) {
double d1 = Double.MIN_VALUE;
double d2 = Double.MAX_VALUE;
double d3 = Double.POSITIVE_INFINITY;
double d4 = Double.NaN;
printIsFinite(d1);
printIsFinite(d2);
printIsFinite(d3);
printIsFinite(d4);
}
メインメソッドは、Double
クラスの MIN_VALUE
と MAX_VALUE
定数を使用して、それぞれ最小および最大の有限の倍精度浮動小数点数値を d1
と d2
に割り当て、正の無限大とNaN値をそれぞれ d3
と d4
に割り当てます。
次のコマンドを使用してJavaコードを再コンパイルして実行します。
javac DoubleIsFiniteDemo.java
java DoubleIsFiniteDemo
プログラムの出力は次のようになるはずです。
4.9E-324 is a finite double value.
1.7976931348623157E308 is a finite double value.
Infinity is not a finite double value.
NaN is not a finite double value.
この実験では、Javaの isFinite()
メソッドを使って倍精度浮動小数点数値が有限値であるかどうかをチェックする方法を学びました。また、異なる値をテストするためにプログラムをカスタマイズする方法、ユーザ定義メソッドで isFinite()
メソッドを使う方法、および境界値を使ってJavaコードをテストする方法も学びました。