Mac OS X10.8でgfortran4.7.1を使用して、特定の精度を使用して単純なプログラムをコンパイルしています。
program simple
implicit none
integer, parameter :: l = selected_real_kind(18,100)
real(kind=l) :: myNum
myNum = 0.123456789123456789
print '(f18.12)', myNum
end program simple
コンパイルして実行すると0.123456791043
、要求した精度が得られていないことを明らかに示しています。
しかし、私がコンパイルすると-fdefault-real-8
、正しい答えが得られます。もちろん、先に進んでオプションを使用することもできますが、これがバグなのか、それとも正当な理由がないのか疑問に思わずにはいられません。selected_real_kind
コードで精度を指定できるようにすることが目的であると思われる場合、コード自体の外で実際のサイズを指定する必要がありますか?