24小时热门版块排行榜    

查看: 4962  |  回复: 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的回帖

virtualzx

木虫 (著名写手)

引用回帖:
8楼: Originally posted by hshx9291 at 2016-01-25 09:32:38
您好,我编的小程序如下:
program test
    real*8 Dli
    Dli=10**12
    write(*,*)Dli
    end
   
输出结果为-727379968.000000,仍不科学啊,有什么错误吗?
另外我原程序需要计算的是Dli(1)=(2.6 ...

看了你的程序,问题在于每一个常数都有类型的,10**12这里10是整型(缺省整数是integer*4),这个类别只能达到10位。

取决于你需要的精度,如果你的程序需要完全精确的数值时才需要整数,整数没有任何误差,但能表示的大小范围很有限。你可以用10_8来指定10是8字节整数。

如果你不需要精确数值,而可以接受一定误差,那么就可以用浮点数。浮点数可以直接用科学计数法表示,比如10^15就是1D15

发自小木虫IOS客户端
11楼2016-01-25 11:15:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 6/300 2026-08-11 13:19 by JACS/Angew
[基金申请] 听说今天filecode变了 +26 布布和一二 2026-08-06 49/2450 2026-08-11 13:18 by WH3796
[基金申请] 帮忙看看fileCode +6 wwncly 2026-08-10 12/600 2026-08-11 13:01 by wwncly
[基金申请] FileCode能看出啥? +7 要乐观耀哥 2026-08-10 17/850 2026-08-11 10:50 by 要乐观耀哥
[基金申请] filecode +9 documentary 2026-08-10 9/450 2026-08-11 10:08 by wk7465
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +6 Tide man 2026-08-10 6/300 2026-08-11 09:45 by tangmnt
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 关于Filecode分析方法 +3 majunge000 2026-08-10 3/150 2026-08-10 15:46 by lch2012
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +11 archvillain 2026-08-04 13/650 2026-08-10 14:41 by seekfind
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 这样的filecode谁见过 +11 布布和一二 2026-08-08 22/1100 2026-08-10 11:10 by wmfsnow
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
信息提示
请填处理意见