W
watt
Unregistered / Unconfirmed
GUEST, unregistred user!
我用大虾们提供的方法做了一个倒计时的程序,大体上可以实现,可是出了一个不小的问题,代码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t1,t2:tdatetime;
i:double;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); //我用了一个Ttimer
begin
if i>0 then
label1.Caption:=floattostr(i)
else
label1.Caption:='时间到!'; //将'时间到这个信息显示在一个Label上'
i:=i-1;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
t1:=strtodatetime('2007-1-25 5:59:50');
t2:=strtodatetime('2007-1-25 5:59:59');
i:=(t2-t1)*24*3600;
end;
end.
问题就是:本来我预期的结果应该是9的,可是结果确实8.99999958928674,如果我将
t1:=strtodatetime('2007-1-25 5:59:50');
t2:=strtodatetime('2007-1-25 5:59:59');
更改为
t1:=strtodatetime('2007-1-25 0:0:50');
t2:=strtodatetime('2007-1-25 5:59:59');
的时候,本来应该是21549的,但是出来的结果却是21549.0000000224,我仔细地思考了一下,认为之所以出现这个情况的原因,应该是因为tdatetime的时间部分有关系,可是我不知道应该如何解决这个问题,请高手帮忙,谢谢
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
t1,t2:tdatetime;
i:double;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); //我用了一个Ttimer
begin
if i>0 then
label1.Caption:=floattostr(i)
else
label1.Caption:='时间到!'; //将'时间到这个信息显示在一个Label上'
i:=i-1;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
t1:=strtodatetime('2007-1-25 5:59:50');
t2:=strtodatetime('2007-1-25 5:59:59');
i:=(t2-t1)*24*3600;
end;
end.
问题就是:本来我预期的结果应该是9的,可是结果确实8.99999958928674,如果我将
t1:=strtodatetime('2007-1-25 5:59:50');
t2:=strtodatetime('2007-1-25 5:59:59');
更改为
t1:=strtodatetime('2007-1-25 0:0:50');
t2:=strtodatetime('2007-1-25 5:59:59');
的时候,本来应该是21549的,但是出来的结果却是21549.0000000224,我仔细地思考了一下,认为之所以出现这个情况的原因,应该是因为tdatetime的时间部分有关系,可是我不知道应该如何解决这个问题,请高手帮忙,谢谢