以文本方式查看主题 - 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 -- 养成良好的编程习惯 编程规范很重要!上述就是一个编程规范问题 |