0

次の行を読み込もうとしています:

110134458.602 7 20957861.900

現在、私のフォーマット行は次のとおりです。

READ(7,110,END=999) L1,C1,D1
write(*,*) L1,C1,D1
110 FORMAT(F14.3,1x,F1.0,2x,F14.3)

ただし、私が受け取っている出力は次のとおりです。

110134458.60200000 7.0000000000000000 20957861.899999999

小数点以下の桁数が非常に多く、最終的な値が一致しないのはなぜですか? ありがとうございました!

4

1 に答える 1

2

値を正しく読み取っているようです。出力用のリスト指示 IO を使用すると、コンパイラは通常、数値型の最大桁数を使用します。すべての 10 進数値が正確な有限精度の 2 進数に相当するわけではありません。これはおそらく 3 番目の数値で見られるものです。出力にフォーマット ステートメントを使用して桁数を少なくすると、値は丸められて正しく表示されます。

于 2012-08-29T18:27:16.100 に答える