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