Fortran Coder

查看: 29035|回复: 10
打印 上一主题 下一主题

[求助] 使用8位精度变量时常量的精度问题

[复制链接]

7

帖子

2

主题

0

精华

入门

F 币
32 元
贡献
19 点
跳转到指定楼层
楼主
发表于 2019-11-19 10:52:48 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如果设置变量kind=selected_real_kind(8),是不是在对变量赋值以及运算过程中所有涉及的常量后面都加上 _kind 才能满足精度要求呢?这样感觉很麻烦
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

7

帖子

2

主题

0

精华

入门

F 币
32 元
贡献
19 点
沙发
 楼主| 发表于 2019-11-19 14:50:33 | 显示全部楼层
li913 发表于 2019-11-19 13:51
两种写法:1、下划线加整型常数或常量;2、加D,如 1d0, 1.0d1, 2d3分别为双精度实数 1,10,200. ...

除了赋值的时候需要加,运算的时候也需要吗,比如a=3*b+1需要写成a=3d0*b+1d0吗

7

帖子

2

主题

0

精华

入门

F 币
32 元
贡献
19 点
板凳
 楼主| 发表于 2019-11-19 15:35:51 | 显示全部楼层
necrohan 发表于 2019-11-19 15:00
计算过程中自动转到最高精度,如果b是双精度,结果就是双精度,其他常数就不需要 ...

我试了一下结果并不是啊

7

帖子

2

主题

0

精华

入门

F 币
32 元
贡献
19 点
地板
 楼主| 发表于 2019-11-20 09:20:24 | 显示全部楼层
weixing1531 发表于 2019-11-19 17:00
0.1d0 每个中间环节都要双精度

感谢,以防万一就把每个常数都加上吧

7

帖子

2

主题

0

精华

入门

F 币
32 元
贡献
19 点
5#
 楼主| 发表于 2019-11-20 09:22:27 | 显示全部楼层
vvt 发表于 2019-11-19 18:57
一些编译器允许把默认精度改成双精度。比如 -fdefault-real-8 之类的参数

谢谢!编译器设置这里不太懂,我还是先对常数加双精度吧
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-3 23:20

Powered by Tencent X3.4

© 2013-2024 Tencent

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