爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3304|回复: 2

[源代码] run-time error M6104: MATH - floating-point error: overflow

[复制链接]

新浪微博达人勋

发表于 2016-7-19 20:54:22 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 捌布 于 2016-7-20 09:20 编辑

运行结果出现这个,怎么解决,程序如下:
parameter (n1=7,n2=5,ix=480,iy=241)
real x(ix,iy,n1),y(ix,iy,n2),tt(ix,iy),x1(n1),x2(n2)
real xave01(ix,iy),yave02(ix,iy),xycha(ix,iy)
open(10,file='D:\zhou\z700mbspringmean7913binweaker.bin',form='binary')
        do it=1,n1
read(10)((x(i,j,it),i=1,ix),j=1,iy)
        enddo
close(10)

open(11,file='D:\zhou\z700mbspringmean7913binstronger.bin',form='binary')
        do it=1,n2
read(11)((y(i,j,it),i=1,ix),j=1,iy)
        enddo
close(11)

do i=1,ix
  do j=1,iy
    do it=1,n1
x1(it)=x(i,j,it)
enddo
do it=1,n2
x2(it)=y(i,j,it)
    enddo
    call T_test_cha(n1,n2,x1,x2,t)
   
tt(i,j)=t

  enddo
enddo

open(12,file='D:\zhou\test.grd',form='binary')
write(12)((tt(i,j),i=1,ix),j=1,iy)
close(12)
       do i=1,ix
      do j=1,iy
        do it=1,n1
      xave01(i,j)=xave01(i,j)+x(i,j,it)
   enddo
   
     do it=1,n2
     yave02(i,j)=yave02(i,j)+y(i,j,it)
     enddo
          enddo
     enddo
      do i=1,ix
      do j=1,iy
            xave01(i,j)=xave01(i,j)/(n1*1.0)
   yave02(i,j)=yave02(i,j)/(n2*1.0)
     enddo
  enddo

           do i=1,ix
            do j=1,iy
   xycha(i,j)=yave02(i,j)-xave01(i,j)
      enddo
   enddo

open(55,file='D:\zhou\stronger_weaker.grd',form='binary')
      write(55)((xycha(i,j),i=1,ix),j=1,iy)
End
subroutine T_test_cha(n1,n2,X1,X2,t)
implicit none
integer,intent(in)::n1,n2
real,dimension(n1),intent(in)::X1,X2
real,intent(out)::t
real::ave1,ave2,var1,var2,Sp
call avevar(n1,X1,ave1,var1)
call avevar(n2,X2,ave2,var2)
Sp=((N1-1)*VAR1+(N2-1)*VAR2)/(N1+N2-2)
Sp=SQRT(Sp)
t=(ave2-ave1)/(Sp*(sqrt(1.0/n1+1.0/n2)))
end

subroutine AveVar(n,X,ave,var)
implicit none
integer,intent(in)::n
real,dimension(n)::X(n)
real,intent(out)::ave,var
integer::i
ave=0.0
do i=1,n
   ave=ave+X(i)/float(n)                        
enddo                                             
var=0.0                                            
do i=1,n
   var=var+(X(i)-ave)*(X(i)-ave)/float(n)
enddo
end
请大家帮忙看看,为什么,谢谢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2016-7-20 08:57:04 | 显示全部楼层
程序这么长,很难看出来哪里的问题···
另外你的问题似乎没有见过。

你可以试试看debug一下,看看能不能找到程序运算到哪里中断的;或者逐次print结果看看问题在哪里
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-20 09:18:34 | 显示全部楼层
言深深 发表于 2016-7-20 08:57
程序这么长,很难看出来哪里的问题···
另外你的问题似乎没有见过。

我Ctrl+f5试了下出现这种错误
run-time error M6104: MATH - floating-point error: overflow,说是数据溢出好像,但是我不知道怎样改
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表