这是一小段代码,它返回 epsilon() 的实际值:
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
现在,当我将 if 条件替换为
if (1.0+eps==1.0) then
该程序应该有相同的回报,但不幸的是它没有!我在 Linux 和 Windows 上使用 g95 的最新(快照)版本对其进行了测试。
有人可以向我解释这个问题吗?