JavaA2Z

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

strictfp

日本語 厳密浮動小数点
英語 strict floating-point
ふりがな すとりくとえふぴー
フリガナ ストリクトエフピー

解説

浮動小数点を必ずIEEE754で扱うための予約語
クラスもしくはメソッドを修飾することで、そのクラス内及びメソッド内での浮動小数点の扱いは、必ずIEEE754の仕様に則ったものとなる。
逆に言うと、strictfpで修飾されていない場合、厳密にIEEE754の仕様に則っていない場合がある。これは、浮動小数点の計算は、実際にはJavaではなくCPUがい、浮動小数点の計算結果がCPUの仕様に依存するためである。
strictfpはこの問題を解決し、常にIEEE754の仕様に則った結果をもたらす。ただし、そこまでこだわるのであれば、動作速度が許せばBigDecimalクラスを使用した方がいいだろう。

参考サイト

  • (参考サイトはありません)

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

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

// Sample.java

public class Sample
{
    public static void main( String[] args )
    {
        Sample sample = new Sample();
        sample.strictfpMethod();
    }

    /**
    *   strictfpメソッド。
    */
    public strictfp void strictfpMethod()
    {
        double d1 = 2.0;
        double d2 = 3.0;
        Strictfp.outputDoubleBit( d1 + d2 );
        // 0 10000000001 0100000000000000000000000000000000000000000000000000
    }
}

/**
*   strictfpクラス。
*/
strictfp class Strictfp
{
    /**
    *   double型変数をビット形式で出力します。
    */
    public 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 )
    {
        Sample sample = new Sample();
        sample.strictfpMethod();
    }

    /**
    *   strictfpメソッド。
    */
    public strictfp void strictfpMethod()
    {
        double d1 = 2.0;
        double d2 = 3.0;
        Strictfp.outputDoubleBit( d1 + d2 );
        // 0 10000000001 0100000000000000000000000000000000000000000000000000
    }
}

/**
*   strictfpクラス。
*/
strictfp class Strictfp
{
    /**
    *   double型変数をビット形式で出力します。
    */
    public 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:2005/06/06
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。