虽然分少,但是这个关于倒计时的问题很值得讨论(5分)

  • 主题发起人 主题发起人 watt
  • 开始时间 开始时间
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的时间部分有关系,可是我不知道应该如何解决这个问题,请高手帮忙,谢谢
 
你修改一句代码就好。
i:=round((t2-t1)*24*3600);
 
请zywcd大虾解释一下round()函数,它是不是用来取整的?
 
round()是四舍五入函数,不过这个函数有些怪,并不是真正的四舍五入.
 
So many questions in my mind.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
631
import
I
I
回复
0
查看
649
import
I
后退
顶部