24小时热门版块排行榜    

查看: 4678  |  回复: 14

hshx9291

银虫 (初入文坛)

[求助] Fortran计算10的十次方以上运算结果不正确,是精度问题吗? 已有1人参与

最近用Fortran进行模拟计算,计算结果显示错误,往回找某一参数的计算结果发现为0.0000000E+000,后来检查式子发现有个10的12次方计算。然后我就另建新项目计算了10的几次方计算,发现10的9次方计算结果是1000000000正常,但是10的十次方计算结果就成了1410065408,11次方为1215752192,12次方就成了-727379968。一开始怀疑是精度问题,但是设置成精度为real(8),real(16)结果计算都是这样。求问大神是为什么?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suyi20466975

至尊木虫 (正式写手)

巾帼将军

【答案】应助回帖

感谢参与,应助指数 +1
是因为整数,fortran对整数的存储是有极限的,你把做计算的变量定义成双精度实型,最后它会以科学计数法的形式给出结果。

发自小木虫IOS客户端
Everythingwillbechanged!
2楼2016-01-24 17:18:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

你用的四字节整数,就只能到这个数量级。如果需要更多,可以告诉编译器使用八字节整数(ifort 的flag 是-i8),可以到二十位数。再多一般就没有使用精确数值的必要了,可以用浮点数近似代替

发自小木虫IOS客户端
3楼2016-01-24 17:56:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hshx9291

银虫 (初入文坛)

引用回帖:
2楼: Originally posted by suyi20466975 at 2016-01-24 17:18:53
是因为整数,fortran对整数的存储是有极限的,你把做计算的变量定义成双精度实型,最后它会以科学计数法的形式给出结果。

请问双精度实型怎么定义?real(8)不已经是双精度了吗?

发自小木虫Android客户端
4楼2016-01-24 20:57:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hshx9291

银虫 (初入文坛)

引用回帖:
3楼: Originally posted by virtualzx at 2016-01-24 17:56:09
你用的四字节整数,就只能到这个数量级。如果需要更多,可以告诉编译器使用八字节整数(ifort 的flag 是-i8),可以到二十位数。再多一般就没有使用精确数值的必要了,可以用浮点数近似代替
...

请问在Windows下的Intel Fortran怎么设定?

发自小木虫Android客户端
5楼2016-01-24 20:58:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
4楼: Originally posted by hshx9291 at 2016-01-24 20:57:00
请问双精度实型怎么定义?real(8)不已经是双精度了吗?
...

你这个变量是整数,不是实型。八字节整数定义为integer*8

如果不想改代码可以用flag让编译器自动把所有整形视为长整数,windows没用过, 但猜测应该是/i8

发自小木虫IOS客户端

» 本帖已获得的红花(最新10朵)

6楼2016-01-25 00:35:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

suyi20466975

至尊木虫 (正式写手)

巾帼将军

【答案】应助回帖

real *8双精度实型

发自小木虫IOS客户端
Everythingwillbechanged!
7楼2016-01-25 08:54:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hshx9291

银虫 (初入文坛)

引用回帖:
7楼: Originally posted by suyi20466975 at 2016-01-25 08:54:40
real *8双精度实型

您好,我编的小程序如下:
program test
    real*8 Dli
    Dli=10**12
    write(*,*)Dli
    end
   
输出结果为-727379968.000000,仍不科学啊,有什么错误吗?
另外我原程序需要计算的是Dli(1)=(2.609*(10**-12)*Tda)/muli(2),其中Tda=750,muli(2)=118.75,计算结果显示Dli(1)=0.0000000000E+000.
8楼2016-01-25 09:32:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hshx9291

银虫 (初入文坛)

送红花一朵
引用回帖:
6楼: Originally posted by virtualzx at 2016-01-25 00:35:15
你这个变量是整数,不是实型。八字节整数定义为integer*8
如果不想改代码可以用flag让编译器自动把所有整形视为长整数,windows没用过, 但猜测应该是/i8
...

谢谢您,按您的方法的确可以让输出结果为正常。但是我程序计算过程中的式子怎么调才可以为正常的?程序内部有很多式子都是要计算10的正负12次方以上。例如其中一句Dli(1)=(2.609*(10**-12)*Tda)/muli(2)  , 怎样设定才能让计算结果正确呢?
9楼2016-01-25 09:36:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

virtualzx

木虫 (著名写手)

看了你的程序,问题在于

发自小木虫IOS客户端
10楼2016-01-25 11:05:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hshx9291 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 081700 调剂 267分 +9 迷人的哈哈 2026-03-23 9/450 2026-03-24 11:58 by 544594351
[考博] 26申博自荐 +3 whh869393 2026-03-24 3/150 2026-03-24 09:55 by 21018060
[考研] 335求调剂 +4 yuyu宇 2026-03-23 5/250 2026-03-23 23:49 by Txy@872106
[考研] 341求调剂(一志愿湖南大学070300) +5 番茄头--- 2026-03-22 6/300 2026-03-23 23:45 by Txy@872106
[考研] 一志愿国科过程所081700,274求调剂 +3 三水研0水立方 2026-03-23 3/150 2026-03-23 23:11 by MajorWen
[考研] 一志愿211 初试270分 求调剂 +4 谷雨上岸 2026-03-23 5/250 2026-03-23 21:18 by 不惑可乐
[考研] 一志愿陕师大生物学071000,298分,求调剂 +3 SYA! 2026-03-23 3/150 2026-03-23 19:09 by macy2011
[考研] 306求调剂 +9 chuanzhu川烛 2026-03-18 9/450 2026-03-23 13:17 by luoyongfeng
[考研] 291求调剂 +5 孅華 2026-03-22 5/250 2026-03-23 09:20 by haoshis
[考研] 260求调剂 +3 朱芷琳 2026-03-20 4/200 2026-03-22 15:12 by 朱芷琳
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 303求调剂 +5 安忆灵 2026-03-22 6/300 2026-03-22 12:46 by 素颜倾城1988
[考研] 求调剂 +3 .m.. 2026-03-21 4/200 2026-03-21 16:25 by barlinike
[考研] 材料学学硕080502 337求调剂-一志愿华中科技大学 +4 顺顺顺mr 2026-03-18 5/250 2026-03-21 10:22 by luoyongfeng
[考研] 332求调剂 +4 ydfyh 2026-03-17 4/200 2026-03-21 02:20 by JourneyLucky
[考研] 一志愿华中科技大学,080502,354分求调剂 +5 守候夕阳CF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[考研] 一志愿中海洋材料工程专硕330分求调剂 +8 小材化本科 2026-03-18 8/400 2026-03-20 23:16 by JourneyLucky
[考研] 0817 化学工程 299分求调剂 有科研经历 有二区文章 +22 rare12345 2026-03-18 22/1100 2026-03-20 20:39 by zhukairuo
[论文投稿] 申请回稿延期一个月,编辑同意了。但系统上的时间没变,给编辑又写邮件了,没回复 10+3 wangf9518 2026-03-17 4/200 2026-03-19 23:55 by babero
[考研] 【同济软件】软件(085405)考研求调剂 +3 2026eternal 2026-03-18 3/150 2026-03-18 19:09 by 搏击518
信息提示
请填处理意见