Question

Ici, un petit extrait de code qui renvoie Epsilon () pour une valeur réelle:

program epstest
real :: eps=1.0, d
do
  d=1.0+eps  
  if (d==1.0) then
    eps=eps*2
    exit
  else
    eps=eps/2
  end if
end do
write(*,*) eps, epsilon(d)
pause
end program

Maintenant, quand je remplace la condition IF par

   if (1.0+eps==1.0) then

Le programme devrait avoir la même chose en retour, mais ce n'est malheureusement pas! Je l'ai testé avec la dernière version (instantanée) de G95 sur Linux et Windows.

Quelqu'un peut-il m'expliquer ce problème?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top