24小时热门版块排行榜    

查看: 458  |  回复: 9
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

gongxd325

至尊木虫 (文坛精英)

[交流] 【求助】一句Fortran语句出错问题(已解决)

编个小程序计算指前因子和速率常数,有个语句出错,向大家请教(kB/h=0..20827*10**11)
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
程序计算结果是 0.113E+12,正确的结果应该是 9.28E+12
假如只计算 0.20827*298.15*EXP(2-13.288/8.314) 得到 92.8,乘以10**11结果就正确。
想不明白,不知道为什么?

[ Last edited by cadick on 2009-12-14 at 02:53 ]
回复此楼
一个人做点好事并不难难的是一辈子做好事!!!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gongxd325

至尊木虫 (文坛精英)

谢谢!
Compaq Visul Fortran不报错,但结果错误,搞了半天。
一个人做点好事并不难难的是一辈子做好事!!!
3楼2009-06-01 11:42:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
CODE:
A=0.20827*298.15*EXP(2-13.288/8.314)*10.0**11

其实改动很小,就是将 10 改成 10.0。如果不改的话,gfortran -Wall 会给出如下提示:
CODE:
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
                                            1
Error: Arithmetic overflow at (1)

[ Last edited by snoopyzhao on 2009-6-1 at 11:26 ]
2楼2009-06-01 11:24:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
q68(金币+2,VIP+0):多多指教! 6-1 18:32
你这样写程序会有问题的
建议改一下
A=0.20827d0*298.15d0*EXP(2.0d0-13.288d0/8.314d0)*10.0d0**11

如果是real*16的 就改d0成q0.
引用回帖:
Originally posted by gongxd325 at 2009-6-1 11:13:
编个小程序计算指前因子和速率常数,有个语句出错,向大家请教(kB/h=0..20827*10**11)
      A=0.20827*298.15*EXP(2-13.288/8.314)*10**11
程序计算结果是 0.113E+12,正确的结果应该是 9.28E+12
假如只计算  ...

4楼2009-06-01 16:37:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dlbrians

木虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
是不是算符的优先级问题?多加个括号试试看啊。
5楼2009-06-01 20:17:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见