为什么会这样呢?(30分)

  • 主题发起人 主题发起人 3368aa
  • 开始时间 开始时间
3

3368aa

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
d:tdatetime;
s:string;
begin
d:=now;
s:=datetimetostr(d);
if strtodatetime(s)=d then
canvas.TextOut(100,100,'yes')
else
canvas.TextOut(100,100,'no');
end;

为什么日期时间型转换成字符串,再转换回来就不一样了,该怎么写?
 
精度问题。都是Double的。
procedure TForm1.Button1Click(Sender: TObject);
var
d: tdatetime;
s: string;
begin
d := now;
s := datetimetostr(d);

Edit1.Text := FloatToStr(d);
Edit2.Text := FloatToStr(strtodatetime(s));

if strtodatetime(s) = d then
canvas.TextOut(100, 100, 'yes')
else
canvas.TextOut(100, 100, 'no');
end;
 
TDateTime本来是一个Double类型,比较时不能用等号
const
dalta = 1 / 24 / 3600
//一个精度值
...
if abs(strtodatetime(s) - d ) < delta then
 
应该怎么才能解决这个问题呢?
 
tseug已经给出解决办法了呀。
 
yxhshi
  能给发详细一点的源码吗?我是菜鸟
 
多人接受答案了。
 

Similar threads

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