Fortran 95 双求和输出不正确

Fortran 95 double summation does not output correctly

我正在尝试用 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左右。

您最初从未设置 s。所以你得到的完全是垃圾。

您应该在每次迭代后将 s1 重新设置为 0 s = s + s1

您还用 1 除以一个更大的整数,因此结果始终为整数 0。您必须选择一项 real。在我的示例中,我通过使用 1..

使 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