Fortran Coder

标题: 函数运算问题 [打印本页]

作者: 顺利就好    时间: 2023-12-25 21:42
标题: 函数运算问题
求助,程序语句如下,其中Amm=9,Bmm=3,Cmm=6,都是整数常量
在计算循环时,当I=Amm*Bmm*Cmm,即I=162时,应该会有D=ceiling(I/o1) =6才对,但是运行结果却是7,检查了很多次,但是不知道原因,望大佬解惑

Do I=1,Amm*Bmm*Cmm
  o1=Amm*Bmm    !即o1=27
  D=ceiling(I/o1)     !对层数向上取整
  Pref(I,H)=Pref(I,H)-densitys(I,H)*9.81*rZoneheight(1)*D
  densitys(I,H)=Pref(I,H)/((rT_room_air(I,H)+273.15)*Ra+9.81*Haverage(1))
  write(*,*)I,o1,H,D,Pref(I,H)
  END DO
END DO
stop


35681e0422953eb55f26ea8646cb67f.png (44.68 KB, 下载次数: 66)

35681e0422953eb55f26ea8646cb67f.png

9a80e70f2a08e988ead54a2e7429d9d.png (97.77 KB, 下载次数: 64)

9a80e70f2a08e988ead54a2e7429d9d.png

作者: 风平老涡    时间: 2023-12-25 22:07
显示一下数值 I/o1 看看。
作者: fcode    时间: 2023-12-26 09:50
数值不正确的问题,建议你学习一下单步Debug调试
http://v.fcode.cn/video-debugger.html
视频教程,应用篇《调试器的使用》这个章节
作者: 顺利就好    时间: 2024-1-10 17:17
fcode 发表于 2023-12-26 09:50
数值不正确的问题,建议你学习一下单步Debug调试
http://v.fcode.cn/video-debugger.html
视频教程,应用篇 ...

好的,谢谢!
作者: 布衣龙共    时间: 2024-1-10 18:09
浮点数有误差,你可以把 o1 定义为整数。并且去掉 ceiling 函数。




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