GNU Fortran コンパイラ (gfortran) の最新バージョンを使用して、自分の研究プロジェクトに Fortran を使用しようとしていますが、実数を処理する方法でいくつかの問題に遭遇しています。たとえば、次のコードがある場合:
program test
implicit none
real :: y = 23.234, z
z = y * 100000
write(*,*) y, z
end program
出力として得られます:
23.23999 2323400.0
これは本当に奇妙だと思います。誰かがここで何が起こっているのか正確に教えてもらえますか? z を見ると、 y がその精度を保持していることがわかります。そのため、計算は問題にならないはずです。しかし、y の出力が指定した値と正確に一致しないのはなぜですか? 正確に同じにするためにはどうすればよいでしょうか?