所以我在Fortran中有这个代码:
REAL*8 DELTA,XI,SO,S
SO=0.273333328465621
S=0.323333333556851
XI=0.01
DELTA =SO-S ! DELTA = -0.0500000050912297
IF(DELTA.GE.0.0)XI=XI/10
带有这些值的代码总是最终将IF评估为真并执行XI除法(即XI = 0.001之后。我认为这是一种奇怪的行为,但我的工作是在C#中复制该行为。
使用intel fortran编译,没有优化和完整的调试信息作为32位DLL的一部分
为什么会发生这种情况?
答案 0 :(得分:0)
以下内容不执行IF语句。两者都有gfortran和ifort。
program test_delta
double precision DELTA
DELTA = -0.0500001
IF (DELTA .GE. 0.0) then
write (*, *) "IF-statement executed"
ENDIF
end program test_delta
一个变化是我在IF语句中添加了预期的“then”。否则两个编译器都会发出错误消息。