我试图在Fortran 95中编写一个双重求和,但是,我似乎从来没有得到正确的输出。似乎总是输出Fortran非常小的实数。这是我的代码:
program summation
implicit none
integer::i,j,m,n
real::s,s1
s1=0
do i=1,100
do j=1,100
s1=s1+(1/((i**2)+(j**2)))
end do
s=s1+s
end do
print*, s
end program summation
我认为s的结束值应该在6.4左右。
答案 0 :(得分:2)
您最初从未设置s
。所以你得到了完整的垃圾。
在s1
之后,您应该在每次迭代中将s = s + s1
重新设置为0。
您还将1除以一个更大的整数,因此结果始终为整数0.您必须使用一个tye术语real
。在我的示例中,我使用1.
使其真实。
所以
s=0
do i=1,100
s1=0
do j=1,100
s1=s1+(1./((i**2)+(j**2)))
end do
s=s1+s
end do
print*, s
是可能的,但为什么不把所有东西都归为一个累加器呢?
s=0
do i=1,100
do j=1,100
s=s+(1./((i**2)+(j**2)))
end do
end do
print*, s