Fortran Coder

标题: if语句未生效 [打印本页]

作者: bfjc    时间: 2023-8-4 11:02
标题: if语句未生效
      do i = 1,size(points)

            write(*,*) "i",i,points(i)%x, points(i)%y                              %points为自定义数据类型,其中包含双精度浮点数x,y

          if ((points(i)%x.EQ.3.21132486540519)
     &   .and. (points(i)%y.EQ.9.21132486540519) ) then
              write(*,*) "点集数量",size(points)
!             write(*,*) "i",i,points(i)%x, points(i)%y
              write(*,*) "范围",x_min, x_max, y_min, y_max
        end if

end do


代码中有一个类型为points的数组,通过第二行的write命令,确定数组中包含   points(i)%x=3.21132486540519    points(i)%y=9.21132486540519 的情况,但是为什么第三行的判断条件没有成立,并没有输出内容。用的ivf2019.


作者: fcode    时间: 2023-8-4 11:14
浮点数有误差,不要做相等判断。可以用
abs(points(i)%x-3.21132486540519d0)<1.0d-5 之类的来表示。
此外,常量也有单双精度的区分。双精度常量最好写成 3.21132486540519d0



作者: bfjc    时间: 2023-8-4 11:23
好的好的,学习了,感谢!!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2