JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 無限大とは

無限大

日本語 無限大
英語 inifinite number
ふりがな むげんだい
フリガナ ムゲンダイ

解説

大きすぎる、もしくは小さすぎる数。
計算上は存在するが実際には数値としては存在しない数。「∞」のこと。
 
プログラム上では、double及びfloatの特殊な数値である。
Mathクラス等による計算の結果、無限大が得らた場合に返される。
16進数表記では、double0x7FF0000000000000が正の無限大、0xFFF0000000000000が負の無限大となる。また、float0x7F800000が正の無限大、0xFF800000が負の無限大となる。
これらの値は、Doubleクラス及びFloatクラスのPOSITIVE_INFINITYフィールド及びNEGATIVE_INFINITYフィールドとして宣言されている。また、これらのクラスのisInfinite()メソッドを使用することで無限大であるか判別することができる。

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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 「無限大」は、「正の無限大」と「負の無限大」があり、
        // それぞれPOSITIVE_INFINITYフィールドとNEGATIVE_INFINITYフィールド
        // がDoubleクラスにstatic finalフィールドとして宣言されています。
        double dPositiveInfinity = Double.POSITIVE_INFINITY;
        double dNegativeInfinity = Double.NEGATIVE_INFINITY;
        // System.out.println()メソッドはこれを
        // 「Infinity」「-Infinity」と出力します。
        System.out.println( dPositiveInfinity );
        System.out.println( dNegativeInfinity );
        // Infinity
        // -Infinity

        // Floatクラスも同様です。
        float fPositiveInfinity = Float.POSITIVE_INFINITY;
        float fNegativeInfinity = Float.NEGATIVE_INFINITY;
        System.out.println( fPositiveInfinity );
        System.out.println( fNegativeInfinity );
        // Infinity
        // -Infinity

        // 無限大かどうかはDoubleクラスとFloatクラスの
        // isInfinite()メソッドを使用します。
        System.out.println( Double.isInfinite( dPositiveInfinity ) );
        System.out.println( Double.isInfinite( dNegativeInfinity ) );
        // true
        // true

        // double型の場合、16進数表記で
        // POSITIVE_INFINITYは0x7FF0000000000000、
        // NEGATIVE_INFINITYは0xFFF0000000000000となります。
        String hexPositiveInfinityString = Long.toHexString( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) );
        String hexNegativeInfinityString = Long.toHexString( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) );
        System.out.println( hexPositiveInfinityString );
        System.out.println( hexNegativeInfinityString );
        // 7ff0000000000000
        // fff0000000000000

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

        // 正の無限大は、たとえばMathクラスのpow()メソッドに0と-1を
        // 渡すと返されます。
        double d;
        d = Math.pow( 0, -1 );
        System.out.println( d );
        System.out.println( Double.isInfinite( d ) );
        // Infinity
        // true

        // 負の無限大は、たとえばMathクラスのlog()メソッドに0を
        // 渡すと返されます。
        d = Math.log( 0 );
        System.out.println( d );
        System.out.println( Double.isInfinite( d ) );
        // -Infinity
        // 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 )
    {
        // 「無限大」は、「正の無限大」と「負の無限大」があり、
        // それぞれPOSITIVE_INFINITYフィールドとNEGATIVE_INFINITYフィールド
        // がDoubleクラスにstatic finalフィールドとして宣言されています。
        double dPositiveInfinity = Double.POSITIVE_INFINITY;
        double dNegativeInfinity = Double.NEGATIVE_INFINITY;
        // System.out.println()メソッドはこれを
        // 「Infinity」「-Infinity」と出力します。
        System.out.println( dPositiveInfinity );
        System.out.println( dNegativeInfinity );
        // Infinity
        // -Infinity

        // Floatクラスも同様です。
        float fPositiveInfinity = Float.POSITIVE_INFINITY;
        float fNegativeInfinity = Float.NEGATIVE_INFINITY;
        System.out.println( fPositiveInfinity );
        System.out.println( fNegativeInfinity );
        // Infinity
        // -Infinity

        // 無限大かどうかはDoubleクラスとFloatクラスの
        // isInfinite()メソッドを使用します。
        System.out.println( Double.isInfinite( dPositiveInfinity ) );
        System.out.println( Double.isInfinite( dNegativeInfinity ) );
        // true
        // true

        // double型の場合、16進数表記で
        // POSITIVE_INFINITYは0x7FF0000000000000、
        // NEGATIVE_INFINITYは0xFFF0000000000000となります。
        String hexPositiveInfinityString = Long.toHexString( Double.doubleToLongBits( Double.POSITIVE_INFINITY ) );
        String hexNegativeInfinityString = Long.toHexString( Double.doubleToLongBits( Double.NEGATIVE_INFINITY ) );
        System.out.println( hexPositiveInfinityString );
        System.out.println( hexNegativeInfinityString );
        // 7ff0000000000000
        // fff0000000000000

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

        // 正の無限大は、たとえばMathクラスのpow()メソッドに0と-1を
        // 渡すと返されます。
        double d;
        d = Math.pow( 0, -1 );
        System.out.println( d );
        System.out.println( Double.isInfinite( d ) );
        // Infinity
        // true

        // 負の無限大は、たとえばMathクラスのlog()メソッドに0を
        // 渡すと返されます。
        d = Math.log( 0 );
        System.out.println( d );
        System.out.println( Double.isInfinite( d ) );
        // -Infinity
        // 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」表紙の説明をご覧ください。