24小时热门版块排行榜    

查看: 1376  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lqhcxx

铜虫 (职业作家)

[交流] 【求助】Fortran的计算结果 已有5人参与

program main
real(8):: a
a=0.4
write(*,*) a
end


上面的程序输出结果为0.400000005960464

这是为什么呢?误差吗?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
snoopyzhao的回答并不正确,尝试下面得程序:
CODE:
program test
    real(8) a
    a = 0.4
    print *, a
    a = 0.4d0
    print *, a
end program test

看結果,就就會知道,多出来得数据是单精度转换为双精度时,(随机)加进去得。单精度只有7位有效数字,不足得位数就是你看到得那些。所以,在给双精度赋值的时候,一定要用1.0d0这种格式,或者在选项里指定real的默认精度为双精度。
6楼2010-11-01 17:53:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

额,干了点活,回复得晚了。大家都回答了阿。:-)
7楼2010-11-01 17:54:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

引用回帖:
Originally posted by snoopyzhao at 2010-11-01 20:44:00:


咋不正确了,你单精转双精时这样的结果,不是误差是啥?

我觉得这不叫误差
9楼2010-11-01 21:35:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

我也不知道叫啥
12楼2010-11-02 09:10:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lqhcxx 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见