JavaA2Z

KAB-studio > プログラミング > JavaA2Z > NaNとは

NaN

日本語 非数
英語 Not a Number
ふりがな えぬえーえぬ、のっとあなんばー
フリガナ エヌエーエヌ、ノットアナンバー

解説

数ではない数。
double及びfloatの特殊な数値。
Mathクラス等による計算の結果、正しい計算結果が得られない場合に返される。
16進数表記では、double0x7FF8000000000000、float0x7FC00000がNaNである。これらの値は、Doubleクラス及びFloatクラスのNaNフィールドとして宣言されている。また、これらのクラスのisNaN()メソッドを使用することでNaNであるか判別することができる。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 「NaN」は、Doubleクラスにstatic finalフィールド
        // として宣言されています。
        double dNaN = Double.NaN;
        // System.out.println()メソッドはこれを「NaN」と
        // 出力します。
        System.out.println( dNaN );
        // NaN

        // Floatクラスも同様です。
        float fNaN = Float.NaN;
        System.out.println( fNaN );
        // NaN

        // NaNかどうかはDoubleクラスとFloatクラスの
        // isNaN()メソッドを使用します。
        System.out.println( Double.isNaN( dNaN ) );
        // true

        // double型の場合、NaNは16進数表記で
        // 0x7FF8000000000000となります。
        String hexNaNString = Long.toHexString( Double.doubleToLongBits( Double.NaN ) );
        System.out.println( hexNaNString );
        // 7ff8000000000000

        // 2進数表記だと以下のようになります。
        outputDoubleBit( Double.NaN );
        // 0 11111111111 1000000000000000000000000000000000000000000000000000

        // NaNはたとえばMathクラスのlog()メソッドに-1を
        // 渡すことで返されます。
        double d = Math.log( -1 );
        System.out.println( d );
        // NaN
        System.out.println( Double.isNaN( d ) );
        // true
    }

    /**
    *   double型変数をビット形式で出力します。
    */
    private static void outputDoubleBit( double d )
    {
        // double型変数をビット形式で文字列化します。
        String source = Long.toBinaryString( Double.doubleToLongBits( d ) );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        forint iF1 = source.length(); iF1 < 64; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );
        // 符号、仮数部、指数部の間にスペースを入れます。
        strbuf.insert( 12, " " );
        strbuf.insert( 1, " " );

        System.out.println( strbuf.toString() );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 「NaN」は、Doubleクラスにstatic finalフィールド
        // として宣言されています。
        double dNaN = Double.NaN;
        // System.out.println()メソッドはこれを「NaN」と
        // 出力します。
        System.out.println( dNaN );
        // NaN

        // Floatクラスも同様です。
        float fNaN = Float.NaN;
        System.out.println( fNaN );
        // NaN

        // NaNかどうかはDoubleクラスとFloatクラスの
        // isNaN()メソッドを使用します。
        System.out.println( Double.isNaN( dNaN ) );
        // true

        // double型の場合、NaNは16進数表記で
        // 0x7FF8000000000000となります。
        String hexNaNString = Long.toHexString( Double.doubleToLongBits( Double.NaN ) );
        System.out.println( hexNaNString );
        // 7ff8000000000000

        // 2進数表記だと以下のようになります。
        outputDoubleBit( Double.NaN );
        // 0 11111111111 1000000000000000000000000000000000000000000000000000

        // NaNはたとえばMathクラスのlog()メソッドに-1を
        // 渡すことで返されます。
        double d = Math.log( -1 );
        System.out.println( d );
        // NaN
        System.out.println( Double.isNaN( d ) );
        // true
    }

    /**
    *   double型変数をビット形式で出力します。
    */
    private static void outputDoubleBit( double d )
    {
        // double型変数をビット形式で文字列化します。
        String source = Long.toBinaryString( Double.doubleToLongBits( d ) );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        for( int iF1 = source.length(); iF1 < 64; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );
        // 符号、仮数部、指数部の間にスペースを入れます。
        strbuf.insert( 12, " " );
        strbuf.insert( 1, " " );

        System.out.println( strbuf.toString() );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2006/01/28
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。