Fortran-numeric-precision
Fortran-数値精度
Fortranの古いバージョンでは、デフォルトの実数型と*倍精度*型の2つの*実数*型があることをすでに説明しました。
ただし、Fortran 90/95では、 kind 指定により、実データ型および整数データ型の精度をより詳細に制御できます。
種類の属性
異なる種類の番号は、コンピューター内で異なる方法で保存されます。 kind 属性を使用すると、数値を内部的に保存する方法を指定できます。 例えば、
上記の宣言では、実変数e、f、およびgは、実変数a、b、およびcよりも精度が高くなっています。 整数変数l、m、およびnは、整数変数i、j、およびkよりも大きな値を格納でき、格納する桁数が多くなります。 これはマシンに依存しますが。
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
変数のサイズを問い合わせる
数値のサイズを調べることができる組み込み関数がいくつかあります。
たとえば、* bit_size(i)組み込み関数は、ストレージに使用されるビット数を指定します。 実数の場合、 precision(x)組み込み関数は精度の10進数の桁数を返し、 range(x)*組み込み関数は指数の10進数の範囲を返します。
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-
種類の値を取得する
Fortranは、整数と実数の必要な精度の種類の値を取得するために、さらに2つの組み込み関数を提供します-
- selected_int_kind(r) *selected_real_kind([p、r])
selected_real_kind関数は、指定された10進精度pおよび10進指数範囲rに必要なkind型パラメーター値である整数を返します。 10進数の精度は有効桁数であり、10進数の指数範囲は表現可能な最小および最大の数値を指定します。 したがって、範囲は10-r〜10 + rです。
たとえば、selected_real_kind(p = 10、r = 99)は、小数点以下10桁の精度と少なくとも10-99から10 + 99の範囲に必要な種類の値を返します。
例
上記のプログラムをコンパイルして実行すると、次の結果が生成されます-