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!

questionAnswers(2)

yourAnswerToTheQuestion