什么是:在Fortran中减法的正确方法

时间:2014-07-04 11:11:44

标签: fortran fortran77

enter image description here如何获得正确的值?

我从循环得到的este值是:2.71828183

actdif = actval - este

当我减去时,actdif值为:-4.59045

整个计划是:

    PROGRAM est_e

    c       IMPLICIT NONE

    INTEGER n, lcv
    DOUBLE PRECISION  este, reldif, actdif, factor, actval



    actval = 2.718281828D0
    n=1000
    factor = 1
    este = 1
    DO lcv = 1, n, 1
            factor = factor * lcv
            este = este + 1/factor
    END DO

    actdif =   actval - este
    reldif = actdif/actval


    print *, 'The estimate of e is: ', este
    print *, 'Actual difference is:', actdif
    print *, 'Relative difference is:', reldif
    pause

    END PROGRAM est_e

1 个答案:

答案 0 :(得分:2)

你只是误读了你的输出。您声称输出为:

-4.59045

这种说法与屏幕截图相矛盾。实际输出是:

-4.5904569E-10

这是一个非常小的数字,非常接近于零。另请注意,您的实际值指定为10位有效数字,与您的程序报告的相对错误相符。换句话说,您的估计似乎是准确的,并且您的程序行为正确。