Fortran Coder

查看: 1209|回复: 2
打印 上一主题 下一主题

[数值问题] if语句未生效

[复制链接]

10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
跳转到指定楼层
楼主
发表于 2023-8-4 11:02:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      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.

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

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


10

帖子

5

主题

0

精华

入门

F 币
60 元
贡献
30 点
板凳
 楼主| 发表于 2023-8-4 11:23:21 | 只看该作者
好的好的,学习了,感谢!!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-4 02:14

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表