Fortran Coder

查看: 1900|回复: 6
打印 上一主题 下一主题

[数值问题] 求助大佬们,小数减小数计算输出结果总为0,是什么原因?

[复制链接]

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
跳转到指定楼层
楼主
发表于 2023-7-16 10:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiangyuuuuuu 于 2023-7-16 10:27 编辑

代码段如下:
real(kind=sp),pointer::norm_m(:),dif(:)
real(kind=sp)diff
do i=1,100
dif(i)=abs(norm_m(i)-diff)en do
由于代码过多,我就放了这一段,norm_m和diff是小数点后面有十五位的小数,例如:0.3745748754655。不知道是由于最后的结果接近于零还是什么问题结果都是显示0.000000000000000E+000。精度问题我也尝试该过,结果不变。求大佬看看这是什么问题?
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2023-7-16 12:02:09 | 只看该作者
你需要给出一个能复现问题的代码。如果代码过多,就复制一份(做为备份),然后缩减代码,直到足够少,但能复现问题。
此外,你是否掌握了下断点单步调试?

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
板凳
 楼主| 发表于 2023-7-16 15:27:12 | 只看该作者
fcode 发表于 2023-7-16 12:02
你需要给出一个能复现问题的代码。如果代码过多,就复制一份(做为备份),然后缩减代码,直到足够少,但能 ...

这个好像不太好复现,需要复杂计算出来的结果,读取然后计算,因为整个程序有好些个子程序,我都是一步一步让它输出一段字母运行进行调试的

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2023-7-16 19:05:16 | 只看该作者
那你单步调试吧

213

帖子

2

主题

0

精华

宗师

F 币
2142 元
贡献
875 点

规矩勋章

5#
发表于 2023-7-16 21:24:01 | 只看该作者
如果是小数点后面有十五位的小数的话,双精度也不够,需四精度。

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
6#
 楼主| 发表于 2023-7-18 15:13:07 | 只看该作者
fcode 发表于 2023-7-16 19:05
那你单步调试吧

唉 好吧,无论怎样都感谢你的回复

4

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
9 点
7#
 楼主| 发表于 2023-7-18 15:17:53 | 只看该作者
风平老涡 发表于 2023-7-16 21:24
如果是小数点后面有十五位的小数的话,双精度也不够,需四精度。

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

本版积分规则

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

GMT+8, 2024-12-24 00:59

Powered by Tencent X3.4

© 2013-2024 Tencent

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