33

Fortran 90 で書かれたプログラムのマニュアルには、「すべての実変数とパラメータは 64 ビット精度 (すなわちreal*8) で指定される」と書かれています。

Wikipediaによると、単精度は 32 ビット精度、倍精度は 64 ビット精度に相当するため、プログラムは倍精度を使用しているようです。

しかし、どういうreal*8意味ですか?

8小数点以下8桁という意味だと思いました。ただし、ウィキペディアによると、単精度は通常 6 ~ 9 桁であるのに対し、倍精度は通常 15 ~ 17 桁であるとのことです。これは、「64 ビット精度」というステートメントが と矛盾していることを意味しreal*8ますか?

4

3 に答える 3

36

8 は、データ型が使用するバイト数を表します。

したがって、32 ビット整数integer*4も同じです。

クイック検索で、次のFortran データ型のガイド が見つかりました。

「real*4」ステートメントは、7 桁の精度と -38 から +38 までの 10 の大きさの範囲を持つ単精度 4 バイト実数になるように変数名を指定します。"real" ステートメントは、ほぼすべての 32 ビット コンピュータでの "real*4" ステートメントと同じです。

「real*8」ステートメントは、変数名を、15 桁の精度と -308 から +308 までの 10 の大きさの範囲を持つ倍精度の 8 バイト実数に指定します。「倍精度」ステートメントは、ほぼすべての 32 ビット コンピュータの「real*8」ステートメントと同じです。

于 2012-05-09T17:10:49.130 に答える
26

Fortran で精度を指定するには、少なくとも 4 つの方法があります。

すでに回答されているようreal*8に、バイト数を指定します。やや時代遅れですが、安全なはずです。

新しい方法は「種類」です。組み込み関数を使用して、必要な精度を持つ種類を取得する必要があります。特定の数値で種類を指定することは危険です。異なるコンパイラが異なる値を使用するためです。

さらに別の方法は、ISO_C_Binding の名前付きの型を使用することです。この質問では、整数の種類システムについて説明します。これは、実数の場合と非常によく似ています。

于 2012-05-09T18:03:07.197 に答える
15

スター表記(と呼ばれる)は、以外TYPE*nで使用される場合、非標準のFortran構文です。TYPECHARACTER

文字タイプに適用すると、文字の配列n(または文字列n)が作成されます。

別のタイプに適用する場合は、ストレージサイズをバイト単位で指定します。これは、 KIND型の概念が導入されているFortran90以降では絶対に回避する必要があります。ストレージサイズを指定すると、ポータブルでないアプリケーションが作成されます。

于 2012-05-09T17:45:39.447 に答える