| 各位老师,大家好,本人在Fortran编程中选用一个单精度实型变量进行逐次累加计数,每次都+1,总数目为54000000,但是加至16777216时,该变量的值无法继续增加,一直保持不变。因此,我单独把这一段程序取了出来进行测试,发现计算结果更加迷惑了,发现16777216是个门槛,逐次+1越不过去,但是+2却可以。我也研究了下单精度的计算机存储方式,总数目的大小也没有超过单精度的存储范围,一定是精度的问题,但还是不能想清楚,希望各位老师帮忙解决,测试代码和结果如下: 
 [Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode     Program Test
    Real A,B,C,D
    A=16777215
    B=1
    C=2
    D=3
    Write(*,*) A,B,C,D
    Write(*,*) A+B,A+C,A+D
    A=16777216
    B=1
    C=2
    D=3
    Write(*,*) A,B,C,D
    Write(*,*) A+B,A+C,A+D
    End Program Test测试结果:
 1.6777215E+07   1.000000       2.000000       3.000000
 1.6777216E+07  1.6777216E+07  1.6777218E+07
 1.6777216E+07   1.000000       2.000000       3.000000
 1.6777216E+07  1.6777218E+07  1.6777220E+07
 请按任意键继续. . .
 
 
 |