读书人

如何计算一个数值的变化速度

发布时间: 2012-02-05 12:07:14 作者: rapoo

怎么计算一个数值的变化速度?
有一个数值,int型的。数值在不断增大,可以变化时间不是确定的。有可能每秒都在变,也有可能很久都不变,那么怎么计算出他的变化速度?也就是每小时增加了多少?

[解决办法]
此变量的最新值 减去 其初始值, 就是它的变化值;
最后一次变化的时刻,减去初时时刻,就是变化耗费的时间;

通过上面两个数字即可算出每小时变化多少。也就是说,只需关心初始值(及时刻)及最新一次变化的值(及时刻)。

var
I, IChanged, IInit : integer;
Time1, Time2 : Cardinal;

procedure TForm1.Button1Click(Sender: TObject);//开始计时并测试
begin
I := 123; //赋初值
IChanged := I; //保存前一次变化值
IInit := I; //保存初值

Time1 := GetTickCount; //开始计时
Timer1.Enabled := True;
Timer2.Enabled := True; //开始测试
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if I <> IChanged then
begin
Time2 := GetTickCount - Time1;
Caption := Format( '变量A正以每小时增值 %d 的速度变化 ',[(I-IInit)*((60*60*1000) div (Time2))]);
IChanged := I;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := False;
Timer1.Interval := 10;//这个数值越小,越精确。

Timer2.Enabled := False; //测试用的
Timer2.Interval := 1000;
end;

procedure TForm1.Timer2Timer(Sender: TObject);//测试,每秒自增1,也就是速度为每小时增加3600
begin
Inc(I);
end;

读书人网 >.NET

热点推荐