以文本方式查看主题

-  Fortran中文网  (http://fortran.cn/bbs/index.asp)
--  Fortran语言开发经验交流  (http://fortran.cn/bbs/list.asp?boardid=3)
----  双精度后D0的也会引起误差(D0重要性)  (http://fortran.cn/bbs/dispbbs.asp?boardid=3&id=2671)

--  作者:wangli8009
--  发布时间:2012/1/17 6:37:12

--  双精度后D0的也会引起误差(D0重要性)
双精度后D0的也会引起误差(D0重要性)

点击浏览该文件

在大型复杂工程应用程序中,有大量变量需要赋值,很多人很随意的赋值。甚者说“双精度变量只要声明了,赋值有没有d0不会影响计算结果!”。对一些计算精度要求不高的,没什么大的问题,但对于一些计算精度要求高的,这时如果不引起注意,可能会出现计算结果不对。例如下面一段FORTRAN程序,本来程序中两个数组定义一致,赋值大小也一致,但由于赋值时d0 (f赋值缺少d0,f1有d0)存在与否会引起误差(图)。

高手指点为什么?

program test_real8_d0

  implicit none

  real(8),dimension(5) ::f,f1,ferror

  integer ::i

  open(6,file=\'dat.d11\')  

  !f

  f(1)=0.1

  f(2)=0.2

  f(3)=0.1

  f(4)=0.3

  f(5)=0.2

  !f1

  f1(1)=0.1d0

  f1(2)=0.2d0

  f1(3)=0.1d0

  f1(4)=0.3d0

  f1(5)=0.2d0

  do i=1,5

    ferror(i)=f1(i)-f(i)

       write(6,*) i, ferror(i)

  enddo

  stop

end program test_real8_d0

图 双精度中缺少D0引起的误差

[此贴子已经被作者于2012-1-17 19:14:11编辑过]


--  作者:wangli8009
--  发布时间:2012/4/17 4:56:04

--  养成良好的编程习惯
编程规范很重要!上述就是一个编程规范问题
京ICP备05056801号