0

我想知道 gfortran 是否有特定选项,以便将以下总和包含在 i 中的循环中

startx+(i-iref)*dx

这是

-15+(376-1)*0.04

与 gfortran 完全相同(与 ifort 一样)给出 0。

这些数字不是整数,定义为

real :: dx=0.04
double precision :: iref=1.d0,startx=-15.
integer i=376 !(classic i of a loop)

[ifort 使用 -O0 -assume byterecl -r8 编译,而 gfortran 使用 -O0 -fdefault-real-8 -fdefault-double-8 编译]

可能吗?有什么提示吗?

谢谢

4

1 回答 1

1

一旦您对浮点数进行一些算术运算,就没有/几乎没有像零这样的东西。这主要是由于浮点表示的精度有限。

如果要检查值是否为零,请使用以下行

if ( abs(res) <= 1.e-5 ) then
  write(*,*) 'res=',0.e0
else
  write(*,*) 'res=',res
endif

(这是单精度版本。)

于 2013-10-09T13:31:16.033 回答