fortran95 言語を学ぶことにしました (理由は重要ではありません)。しかし、初心者なので、説明できない奇妙な問題に遭遇したため、助けが必要です。
私は挿入ソートアルゴリズムを持っています:
subroutine insertion_sort_REAL4(array, array_len)
implicit none
!parameners
integer :: array_len
real (kind=4), dimension(array_len) :: array
!variables
integer :: i,key,hole_pos
do i = 0,array_len
key = array(i)
hole_pos = i;
do while ((hole_pos > 0.0) .and. (key < array(hole_pos - 1)))
array(hole_pos) = array(hole_pos - 1)
hole_pos = hole_pos - 1
end do
array(hole_pos) = key
end do
return
end
そして、メインプログラム(抜粋)があります:
real (kind = 4), dimension(3) :: x
x(1) = 3.1
x(2) = 4.3
x(3) = 5.4
write(*,*) 'Array = ',x
call insertion_sort_REAL4(x,3)
write(*,*) 'Array = ',x
最初のwrite
ステートメントが出力されます
Array = 3.09999990 4.30000019 5.40000010
数字が少し変わったのはなぜですか?fortran95 はデフォルトで IEEE754 標準を使用しませんか?
しかし、私はわずかな変化に耐えることができるとしましょう。2番目のwrite
ステートメントが出力されます
Array = 3.00000000 4.00000000 5.00000000
数値が丸められたのはなぜですか?それは本当に私を悩ませており、「書き込み」ステートメントをフォーマットしても何の役にも立たず、Google 検索もあまり役に立ちませんでした。Fortran は C のものなので、インターネット上にはそれほど多くの情報はないと思います。助けてくれてありがとう!