我现在需要在程序里对许多数据进行大量、连续的计算,打算用timer控件,时间设定为500毫秒,也就是每秒计算两次。而每次计算需要把约2000个数据累加求平均值。我想请教一下,以目前主流电脑的计算速度,能应付这么大、这么快的计算量嘛?现在的实际情况,需要累计的这些数据,都是10000以内的整数,比如3000,3100,等等,并且求出的平均值也是采用了取整,可是现在得出的结果很不正常,居然有负数,而我的数据源里的数据全部是正值,没有负的。程序段看下来也好像没什么错误,不知道是不是由于计算量太大,半秒的时间来不及计算而导致错误的结果。请高手指点, 谢谢
解决方案 »
- 这样的范本是怎么实现的?
- 【在线等】小弟刚从C转,不知道这段代码怎么用delphi写
- 怎样用dephi调用java程序 ?
- 请问用adoconnection连接数据库,如何在程序运行能够动态的指定呢,谢谢了
- 新发布的共享软件,反正不是为了赚钱做广告。。。。。。
- Windows 2000 关闭/注销时,应用程序无法终止。
- 怎么会提示 TypeInfo.dcu 文件找不到呢?
- Parameters VS SQL
- 请巨人帮帮忙!
- 怎样建库的时候让系统自己建到data 下?
- 关于用ACCESS+DELPHI做为的登录代码,帮帮忙看下,密码修改后,出现密码出错,无法登录
- cxDBTreeList如何在最前列加入序号
出现负数会不会是你定义的是整型变量范围小了,比如smallint,超过32000多,就变负数了
呵呵,最近特别忙,估计春节前都不会有休息的时间,所以来的少了。
计算过程就是你说的纯粹的加法,然后一次除法。另外,定义的整型变量是用的integer,会不会是2000个integer相加会超出范围?我感觉应该不会吧
1.可能累加数据溢出
2.Timer中如果有Application.ProcessMessage,则可能由于过程重入导致计算混乱,产生溢出
a:=0; b:=0;
for k:=1000 downto 1 do
begin
a:=a+round(strtofloat(sl[k]));
b:=b+round(strtofloat(sl[k]));
end;
c:=round(a/1000);
d:=round(b/1000);其中sl是一个stringlist,没有其他任何语句了,不知道是否会引起溢出