fortran 95 zaokrągla się w górę
Zdecydowałem się nauczyć języka fortran95 (powód, dla którego nie jest ważny). Jednak będąc początkującym natknąłem się na dziwny problem, którego naprawdę nie potrafię wyjaśnić, dlatego potrzebuję pomocy.
Mam algorytm sortowania wstawiania:
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
I jest program główny (fragment):
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
Pierwszywrite
wypisuje wyciąg
Array = 3.09999990 4.30000019 5.40000010
Dlaczego liczby zostały nieznacznie zmienione? Czy fortran95 nie używa domyślnie standardu IEEE754?
Ale powiedzmy, że mogę żyć z niewielką zmianą; drugiwrite
wypisuje wyciągi
Array = 3.00000000 4.00000000 5.00000000
Dlaczego liczby zostały zaokrąglone w górę? Naprawdę mnie to wkurza, a formatowanie „napisz” nie działa, a wyszukiwania w Google nie pomogły. Chyba nie ma zbyt wielu rzeczy w internecie na temat fortranu, jak w C. Jestem przyzwoitym programistą C, więc wszelkie podobieństwa do niego są doceniane. Dziękuję za Twoją pomoc!