2016.02.15

非数値(NaN)とは

はじめに

計算の結果が数値として表せないときに、その値をNaNと表現します。

具体的には、平方根を計算するMath.sqrtメソッドにマイナスの値を渡すとNaNが返ります。

Math.sqrt( -1.0 )  →  マイナス値の平方根は計算できないので結果は、NaN

非数値かどうかの判定には以下のメソッドを使います。

Double.NaNメソッド

public static boolean Double.isNaN( double a )
・引数aで指定した値が非数値(NaN)であるかを判定します。

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

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

Float.NaNメソッド

public static boolean Float.isNaN( float a )
・引数aで指定した値が非数値(NaN)であるかを判定します。

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

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

Javaソースコード その1

以下のJavaソースコードは、Math.sqrtメソッドに-1.0を渡して、その結果を表示するものです。

CalcError1.java

001
002
003
004
005
public class CalcError1 {
	public static void main( String[] args ) {
		System.out.println( "-1.0の平方根=" + Math.sqrt( -1.0f ) );
	}
}

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

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

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

C:\talavax\javasample>javac CalcError1.java

実行

C:\talavax\javasample>java CalcError1

出力結果

-1.0の平方根=NaN

Javaソースコード その2

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

CalcError2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
public class CalcError2 {
	public static void main( String[] args ) {
		double a;

		// -1.0の平行根を計算
		a = Math.sqrt( -1.0f );

		// aがNaNかどうか判定
		if ( true == Double.isNaN( a ) )
			System.out.println( "計算結果が無効です" );
		else
			System.out.println( a );
	}
}

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

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

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

C:\talavax\javasample>javac CalcError2.java

実行

C:\talavax\javasample>java CalcError2

出力結果

計算結果は無効です

以上です。

関連コンテンツ

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

2020.03.23

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

2016.01.20

整数型の変数に8進数を代入する記述の仕方を説明します。

2017.05.16

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

2022.10.25

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

2020.03.23

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

計算の結果が∞となるときの表現方法について解説しています。

2016.02.15

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

2024.01.23

繰り返し処理を使ったJavaのソースコードサンプルを紹介しています。

2020.03.23

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

2020.03.23

コンピュータを制御するために使用する入力機能と出力機能を持つ装置のことをコンソールといいます。興味のある方は、ご覧ください。

2020.08.24

コンピューター(computer)の意味を説明しています。

2022.07.22

プログラミング、ITに関する用語をまとめています。

2022.10.17

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

2022.12.13

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

2020.03.23

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

2020.03.23

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

2023.03.20

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

2020.03.23

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

2022.08.03

「ゆるゆるプログラム」のコンテンツを紹介しています。興味のある方はこの記事をご覧ください。

2020.03.23

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

2022.09.10

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

Swingパッケージを使ってグラフィック表示を行う方法を解説しています。

2020.03.23

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

三角形、台形、円などいろいろな図形の面積を計算するプログラムを紹介しています。詳しくは、記事をご覧ください。

2021.05.18

配列を使うJavaソースコードを多数紹介しています。

2021.05.18

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

日本で使われてきた伝統文様「和柄」について解説しています。

2022.07.27

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

2020.03.23

逆余弦 acosと、Math.acosメソッドの使い方をソースコードを使って詳しく解説しています。

2016.01.07

逆正弦 asinと、Math.asinメソッドの使い方をソースコードを使って詳しく解説しています。

2016.01.07

広告