主题:奇怪
zql1009
[专家分:30] 发布于 2010-09-07 15:51:00
比如计算公式
最后更新于:2010-09-07 21:10:00
回复列表 (共6个回复)
沙发
yeg001 [专家分:14390] 发布于 2010-09-07 15:58:00
有没有想过
D0=0.500000000000000
H(i,j)=1.00000000000000
ysta(j)=0.9750000000000000
写成
D0=0.5D0
H(i,j)=1.0D0
ysta(j)=0.975D0
板凳
asymptotic [专家分:16630] 发布于 2010-09-07 16:00:00
多看看书和帮助文档,写这标题,有意义吗?
1。 你的 literal constant 是 double precision 吗?
2。 double precision 有 16 位精度吗
3 楼
zql1009 [专家分:30] 发布于 2010-09-07 16:12:00
是呀,你不是看到了吗?但结果没有为1.25E-002 呀
4 楼
yeg001 [专家分:14390] 发布于 2010-09-07 16:31:00
ys(100)
下面你给出的是YS(I,J), 而且i, j没有定义.
我改成
program main
implicit none
real*8 D0, H(100,50), ysta(100), ys(100)
D0=0.5d0
H(1, 1)=1.0d0
ysta(1)=0.975d0
YS(1)=D0*(H(1,1)*(1.d0-YSTA(1))-1.d0)
write(*, *) YS(1)
end
-0.487500000000000
Press any key to continue
这个值没问题啊!~
5 楼
zql1009 [专家分:30] 发布于 2010-09-07 16:41:00
我的i,j定义了。在我的程序首部,
INTEGER I ,J
6 楼
yeg001 [专家分:14390] 发布于 2010-09-07 17:37:00
按你最后修改的代码进行了改动, 最后一位小数不为零. 最后位置的数值应该就是计算机二进制表示实数进行计算的时候, 属于合理范围.
我来回复