Fortran Coder

查看: 8866|回复: 2
打印 上一主题 下一主题

[数值问题] gfortran中双精度输入输出有误差,求解答

[复制链接]

35

帖子

17

主题

0

精华

熟手

F 币
136 元
贡献
240 点
跳转到指定楼层
楼主
发表于 2015-8-19 13:43:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
环境:ubantu LTS14.02编译器:gfortran
代码段截取:
[Fortran] 纯文本查看 复制代码
    real(kind=8),parameter,dimension(0:8) :: CF2 = (/ 0.8408618802e6  , 0.3637413208e6  ,-0.4634506669e6  , &
          &  0.1130306339e6  ,-0.4350217298e3  ,-0.3898988188e4  , & !the second number
    do i = 0,8
          write(*,e17.10) CF2(i)
    end do

输出结果:
.840861875E+006
.363741313E+006
-.463450656E+006
.113030633E+006
-.435021729E+003
-.389898828E+004
.669739929E+003
-.473072624E+002
.126512504E+001
问题描述:
10位有效数字的双精度实数,在write的时候会在第7位有效数字时出错,而双精度有15位的有效数字不应该发生这种错误。
check过gfortran中kind定义,8为双精度值。
疑问:是否是gfortran内存调用实型参数是赋值到了一个单精度的实型内存空间?
            如何改变这种情况,使计算时均为双精度实数。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
704 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-8-19 15:46:18 | 只看该作者
0.8408618802e6  , 0.3637413208e6  ,-0.4634506669e6  , &
                                                            &  0.1130306339e6  ,-0.4350217298e3  ,-0.3898988188e4
改为
0.8408618802d6  , 0.3637413208d6  ,-0.4634506669d6  , &
                                                            &  0.1130306339d6  ,-0.4350217298d3  ,-0.3898988188d4

35

帖子

17

主题

0

精华

熟手

F 币
136 元
贡献
240 点
板凳
 楼主| 发表于 2015-8-20 10:08:59 | 只看该作者
楚香饭 发表于 2015-8-19 15:46
0.8408618802e6  , 0.3637413208e6  ,-0.4634506669e6  , &
                                             ...

3q,已解决。
看fortran95/2003,以为现在的语法把d这个废止了,直接使用e就可以
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 20:46

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表