0
INTEGER, PARAMETER :: SINGLE=SELECTED_REAL_KIND(7)
REAL(KIND=SINGLE) :: K
REAL::X
...
K=X
WRITE(*,*) K

の中に 5 か 6 と書くSELECTED_REAL_KINDと有効数字が 6 桁になるのに 7 と書くと 7 桁以上になってしまうのですが、その理由を教えてください。どこで間違えたの?割り当ては問題がありますか?

5、6出力あり→1.39256

7 出力あり -> 1.3925623893

わかりました、私は簡単な質問をしています。この数値 1.3925623893 の有効数字 7 桁を出力するにはどうすればよいですか?

4

1 に答える 1

1

gfortran のドキュメントから:

SELECTED_REAL_KIND(P,R) は、少なくとも P 桁の小数精度を持つ実数データ型の種類の値を返します

少なくとも重要です。浮動小数点数は、ほとんどの場合、4 バイト (単精度) または 8 バイト (倍精度) を使用して格納されます。それだけです。つまり、6 から 7 桁の有効数字を求めると、実際にはさらに多くの数字が追加されます。単精度から倍精度に切り替えました。

本当に必要なのは、必要な精度を格納するのに十分な大きさの実数があり、すでにそれを正しく行っている場合、次のような形式を使用して有効数字を 7 桁だけ表示することです。

write(*,'(F12.7)') K
于 2012-04-27T19:36:51.947 に答える