Fortran Coder

查看: 2843|回复: 1
打印 上一主题 下一主题

[数值问题] 求助,为什么浮点计算结果是有问题的

[复制链接]

5

帖子

2

主题

0

精华

新人

F 币
27 元
贡献
12 点
跳转到指定楼层
楼主
发表于 2022-6-6 22:17:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
if(j==4756 .and. da_daycount>3) then
write(*,*) "nlch1.01"
write(*,*) co
write(*,*) vno3
write(*,*) vv
end if
if (vv > 1.e-10) then
co = vno3/vv
if (co<0.) co=0.
end if
if(j==4756 .and. da_daycount>3) then
write(*,*) "nlch1.02"
write(*,*) co
write(*,*) vno3
write(*,*) vv
end if

结果:
nlch1.01
0.00000000000
0.15994490000
60.96594000000
nlch1.02
0.00262351220
0.15994490000
60.96594000000

但是 co 的答案不应该是0.00262351240吗
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

213

帖子

2

主题

0

精华

宗师

F 币
2142 元
贡献
875 点

规矩勋章

沙发
发表于 2022-6-6 22:46:44 | 只看该作者
这个是数据的精度问题。单精度数值有效位数是6~7位十进制数。双精度数值有效位数是15~17位十进制数。

评分

参与人数 1F 币 +1 收起 理由
fcode + 1 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-24 01:57

Powered by Tencent X3.4

© 2013-2024 Tencent

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