« [R]正規分布に従う乱数を生成する | トップページ | [Fortran]組み込み関数の個別名と総称名について(dsinとsin、dabsとabsなど) »

2015年1月 9日 (金)

[Fortran]単精度浮動小数点数と倍精度浮動小数点数

Fortranでは浮動小数点数(※)を扱うとき、変数へ定数を代入するときには単精度が倍精度を明示しなければならない。

例えば、倍精度浮動小数点型の変数へ代入する際、数値定数を「3.14」としただけでは単精度浮動小数点数とみなされてしまう。この場合、有効桁数は6桁程度しかない。指数部に「E」あるいは「e」を使用した場合も同じ。

高精度な数値計算を行いたくて倍精度浮動小数点数で計算を行う場合は、数値定数の指数部に「D」あるいは「d」を用いた表記を使用すること。

以下の例では、倍精度浮動小数点型の変数に代入する際、数値定数の表記による数値の取扱いの差を示したもの。指数部を「d」を使用して表記しなければ倍精度で扱われていないことがわかる。

program doublecheck
    implicit none
    double precision d1, d2, d3
    d1 = 3.14
    d2 = 3.14e0
    d3 = 3.14d0
    print '(f20.18)', d1
    print '(f20.18)', d2
    print '(f20.18)', d3
end program

出力

3.140000104904174805
3.140000104904174805
3.140000000000000124

※Fortranに関する書籍では「実数」と表記するものが多いが、これは簡便な表記であり、プログラミング言語の分野では実数を「浮動小数点数」と呼ぶことが多い。

« [R]正規分布に従う乱数を生成する | トップページ | [Fortran]組み込み関数の個別名と総称名について(dsinとsin、dabsとabsなど) »

Fortran」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]正規分布に従う乱数を生成する | トップページ | [Fortran]組み込み関数の個別名と総称名について(dsinとsin、dabsとabsなど) »

無料ブログはココログ

■■

■■■