Fortran Coder

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

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

[复制链接]

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

楼主
发表于 2019-11-19 15:00:09 | 显示全部楼层
本帖最后由 necrohan 于 2019-12-12 09:35 编辑
zhangsw13 发表于 2019-11-19 14:50
除了赋值的时候需要加,运算的时候也需要吗,比如a=3*b+1需要写成a=3d0*b+1d0吗 ...
《fortran95 2003程序设计》Stephen_J_Chapman,11.1.4混合运算 中说明如下:“当在一个双精度实数和另一个实数或整数间执行算术运算时,Fortran会把其他值转换为双精度值,在双精度值间完成操作。但是,只有双精度数值和其他数值都出现在同一个操作中的时候才会做这种自动转换。”
书中还给了3个例子,
1.d0/3这种会把其中的3转为双精度计算
1.0/3+1.d0/3 其中1.0/3默认是单精度的3.333333e-1,1.d0/3是3.333333333333333E-001,所以结果是6.666666333333333E-001。

看样子除了乘除法,其他都要加d0。

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

沙发
发表于 2019-11-20 20:06:02 | 显示全部楼层
zhangsw13 发表于 2019-11-19 15:35
我试了一下结果并不是啊

我记得是有这个规则,也试了确实单精度没有默认转为双精度计算,很抱歉我之前没有实践,差点耽误你。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-4 01:50

Powered by Tencent X3.4

© 2013-2024 Tencent

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