24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 518  |  回复: 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的回帖

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的回帖

gongxd325

至尊木虫 (文坛精英)

谢谢!
Compaq Visul Fortran不报错,但结果错误,搞了半天。
一个人做点好事并不难难的是一辈子做好事!!!
3楼2009-06-01 11:42:27
已阅   回复此楼   关注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的回帖

gongxd325

至尊木虫 (文坛精英)

谢谢诸位,问题解决了,主要问题就是二楼snoopyzhao指出的,10改为10.0就行了。
一个人做点好事并不难难的是一辈子做好事!!!
6楼2009-06-01 20:30:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
和那些没有关系
就是我上面说的那个原因。
你可以测试一下。
引用回帖:
Originally posted by dlbrians at 2009-6-1 20:17:
是不是算符的优先级问题?多加个括号试试看啊。

7楼2009-06-01 20:36:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

有兴趣的大家可以试试这个

program xxx
real*8 i
i=0.1
write(*,*) "i=",i
end program xxx

使用gfortran和ifort都是
输出i=0.00000001490116

[ Last edited by tjpm on 2009-6-1 at 20:56 ]
8楼2009-06-01 20:54:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by tjpm at 2009-6-1 20:54:
有兴趣的大家可以试试这个

program xxx
real*8 i
i=0.1
write(*,*) "i=",i
end program xxx

使用gfortran和ifort都是
输出i=0.00000001490116

[ Last edited by tjpm on 2009-6-1 at 20 ...

你就是用 i=0.1d0 得到的结果也不可能恰好等于 0.1 啊……
9楼2009-06-01 22:45:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjpm

金虫 (正式写手)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
q68(金币+2,VIP+0):有意思的程序 6-2 08:22
确实如你所说,0.1 转换成二进制时肯定有误差。
program xxx
real*8 di,dj
real*16 qi,qj
di=0.1
dj=0.1d0
qi=0.1
q1=0.1q0
write(*,*) "di=",di
write(*,*) "dj=",dj
write(*,*) "qi=",qi
write(*,*) "qj=",qj
end program xxx

执行结果:

di=  0.100000001490116     
dj=  0.100000000000000     
qi=  0.100000001490116119384765625000000      
qj=  0.000000000000000000000000000000000E+0000

如果不指定的话,默认是保存为real*4的,所以就出现这样的情况,因为LZ的10是取了10次方的,误差被放大了而已
引用回帖:
Originally posted by snoopyzhao at 2009-6-1 22:45:


你就是用 i=0.1d0 得到的结果也不可能恰好等于 0.1 啊……

10楼2009-06-02 00:08:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gongxd325 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 344材料与化工调剂 +8 调剂上岸玘 2026-04-03 8/400 2026-04-03 21:38 by Demonsssss
[考研] 353求调剂 +5 MayUxw1 2026-04-03 5/250 2026-04-03 21:17 by 啵啵啵0119
[考研] 310求调剂 +18 争取九点睡 2026-03-30 18/900 2026-04-03 18:35 by ls刘帅
[考研] 289-求调剂 +4 这里是_ 2026-04-03 4/200 2026-04-03 14:23 by 1753564080
[考研] 298分 070300求调剂 +11 zwen03 2026-04-02 11/550 2026-04-03 10:19 by macy2011
[考研] 求调剂求调剂 +7 121. 2026-04-02 7/350 2026-04-02 19:15 by dick_runner
[考研] 318求调剂 +3 笃行致远. 2026-03-31 4/200 2026-04-02 15:56 by Jaylen.
[考研] 一志愿北京科技大学085601材料工程英一数二初试总分335求调剂 +8 双马尾痞老板2 2026-04-02 9/450 2026-04-02 14:45 by 5896
[考研] 314求调剂 +11 1xiaojun23 2026-03-31 12/600 2026-04-02 12:31 by 1xiaojun23
[考研] 270调剂 +7 maxjxbsk 2026-04-02 7/350 2026-04-02 09:50 by yulian1987
[考研] 化学工程专硕324分,一志愿中国矿业大学求调剂 +7 耿耿1314 2026-04-01 7/350 2026-04-02 07:40 by 尚水阁主
[考研] 085602化学工程268分蹲调剂 +8 月照花林。 2026-04-01 8/400 2026-04-01 22:08 by 无际的草原
[考研] 265求调剂 +11 yelck 2026-04-01 12/600 2026-04-01 19:12 by 549790059
[考研] 08工科275求调剂,可跨考。 +5 AaAa7420 2026-03-31 5/250 2026-04-01 15:21 by 159357hjz
[考研] 283求调剂 +9 A child 2026-03-28 9/450 2026-04-01 14:20 by Jaylen.
[考研] 085410人工智能 初试316分 求调剂 +3 残星拂曙 2026-03-31 3/150 2026-04-01 11:09 by 小熊raider
[考研] 0856求调剂 +9 楒桉 2026-03-28 9/450 2026-03-31 19:06 by 暮泽12
[考研] 本2一志愿C9-333分,材料科学与工程,求调剂 +9 升升不降 2026-03-31 9/450 2026-03-31 18:01 by 无际的草原
[考研] 085701求调剂初试286分 +5 secret0328 2026-03-28 5/250 2026-03-30 12:54 by fangnagu
[考研] 086000生物与医药调剂 +5 Feisty。 2026-03-28 9/450 2026-03-29 12:02 by longlotian
信息提示
请填处理意见