bfjc 发表于 2023-8-4 11:02:28

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:56

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


bfjc 发表于 2023-8-4 11:23:21

好的好的,学习了,感谢!!
页: [1]
查看完整版本: if语句未生效