作者snowanimal (动物先生)
看板Fortran
标题Re: [问题] 实在是找不到BUG~"~
时间Tue Nov 22 16:13:46 2011
※ 引述《junny621 (junny)》之铭言:
: 1 do i=1,n
: 2 if(t(i)>216d0)then
: 3 cp(i)=1060
: 4 else if(184d0<t(i).and.t(i)<=216d0)then
: 5 cp(i)=1500
: 6 else if(182d0<t(i).and.t(i)<=184d0)then
: 7 cp(i)=2000
: 8 else if(t(i)<=182d0)then
: 9 cp(i)=1190
: t(i)从232开始降温
: 程式开始跑
: 跑到T(i)=216就会停下来(就跑到216.001589519226300就不继续往下了~"~)
: 如果将第4行後面改成t(i)<=215.95d0才能继续跑
: 第6行也有相同问题t(i)<=183.95d0才能继续跑
: 但这属於偷吃步所以值有问题
: 实在是找不到BUG 请求板上高手帮忙
: 谢谢~~
你的t(i)是整数还是实数?你如果前面没有定义,那麽程式会自动判定为实数。
还有你的216d0指的应该是216度?
基本上我猜是real跟integer出问题
解决办法
把t(i)设为实数
接着把 216d0 改为 216.d0 其余照办试试看吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.73.99.215
※ 编辑: snowanimal 来自: 42.73.99.215 (11/22 16:21)
1F:推 junny621:我的T(n)本来就以经是宣告real*8,改为216.0一样耶= = 11/22 16:22
2F:推 weichich:我看得感觉也是整数和浮点数的问题耶... 11/25 22:44
3F:→ weichich:试看看所有浮点数包含判别式中的都加个.D0 11/25 22:45