| 查看: 4583 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
Fortran计算10的十次方以上运算结果不正确,是精度问题吗? 已有1人参与
|
|||
| 最近用Fortran进行模拟计算,计算结果显示错误,往回找某一参数的计算结果发现为0.0000000E+000,后来检查式子发现有个10的12次方计算。然后我就另建新项目计算了10的几次方计算,发现10的9次方计算结果是1000000000正常,但是10的十次方计算结果就成了1410065408,11次方为1215752192,12次方就成了-727379968。一开始怀疑是精度问题,但是设置成精度为real(8),real(16)结果计算都是这样。求问大神是为什么? |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有221人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
|
谢谢您的耐心解答,我原程序有大量的计算式,需要精确数值。如果要得到精确结果,每个常数后面都要写加上_8吗?例如程序中有一段计算为: rholi(1)=410.70110+1.13071*(722-Tda)-9.5509*10**-4*(722-Tda)**2+6.7842*10**-7*(722-Tda)**3 cpli(1)=0.00692*Tda**2-0.532*Tda+1720.3 muli(1)=175.1*10**-3*exp(-10.31+1859/Tda) muli(2)=127.58*10**-3*exp(-9.47+1463/Tda) kli(1)=(0.4607*(1-0.00138*Tda)**0.38)/(Tda**(1/6)) Dli(1)=(2.609*(10**-12)*Tda)/muli(2) 怎样才能让计算结果显示精确呢?我只在Dli(1)的赋值语句中加上_8显示结果仍为错误的。有没有全局设定什么的?谢谢您。 |
12楼2016-01-25 14:41:48
suyi20466975
至尊木虫 (正式写手)
巾帼将军
- 应助: 6 (幼儿园)
- 金币: 10436.8
- 散金: 47
- 红花: 48
- 帖子: 703
- 在线: 129.5小时
- 虫号: 738293
- 注册: 2009-04-02
- 性别: MM
- 专业: 凝聚态物性 II :电子结构

2楼2016-01-24 17:18:53
virtualzx
木虫 (著名写手)
- 应助: 263 (大学生)
- 金币: 7161.3
- 红花: 54
- 帖子: 1605
- 在线: 317.6小时
- 虫号: 2069080
- 注册: 2012-10-18
- 性别: GG
- 专业: 理论和计算化学
|
你用的四字节整数,就只能到这个数量级。如果需要更多,可以告诉编译器使用八字节整数(ifort 的flag 是-i8),可以到二十位数。再多一般就没有使用精确数值的必要了,可以用浮点数近似代替 发自小木虫IOS客户端 |
3楼2016-01-24 17:56:09
4楼2016-01-24 20:57:00












回复此楼