我想知道gfortran是否有特定选项,以便将以下总和包含在i的循环中
startx+(i-iref)*dx
是
-15+(376-1)*0.04
与gfortran完全相同(与ifort一样)。
这些数字不是整数,定义为
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]
有可能吗?任何提示?
由于
答案 0 :(得分:1)
只要你对浮点数进行一些算术运算,就没有/几乎没有这样的事情就是零。这主要是由于浮点表示的精度有限。
如果要检查值是否为零,请使用
行中的内容if ( abs(res) <= 1.e-5 ) then
write(*,*) 'res=',0.e0
else
write(*,*) 'res=',res
endif
(这是单精度版本。)