我在编辑框文本改变消息处理函数中这样写:
procedure TForm1.Edit1Change(Sender: TObject);
begin
try
if Edit1.Text <>'' then
if (strtofloat(Edit1.Text)*100-trunc(strtofloat(Edit1.Text)*100)) >0 then
showmessage('小数点后不能超过2位数!');
except
on E:EConvertError do
showmessage('请输入正确的浮点数!');
end;
end;
我的目的是控制文本框中只能输入浮点数,并且小数点后不能超过2位,运行结果出现奇怪的问题,输入1.2以外的数字都照我的意图运行
不过输入1.2就提示'小数点后不能超过2位数!'了,可是只有1位小数啊(不是我眼花吧- -),我不明白了,希望大虾门给个合理的解答!!!!
procedure TForm1.Edit1Change(Sender: TObject);
begin
try
if Edit1.Text <>'' then
if (strtofloat(Edit1.Text)*100-trunc(strtofloat(Edit1.Text)*100)) >0 then
showmessage('小数点后不能超过2位数!');
except
on E:EConvertError do
showmessage('请输入正确的浮点数!');
end;
end;
我的目的是控制文本框中只能输入浮点数,并且小数点后不能超过2位,运行结果出现奇怪的问题,输入1.2以外的数字都照我的意图运行
不过输入1.2就提示'小数点后不能超过2位数!'了,可是只有1位小数啊(不是我眼花吧- -),我不明白了,希望大虾门给个合理的解答!!!!
if comparevalue((strtofloat(Edit1.Text)*100-trunc(strtofloat(Edit1.Text)*100)),0, 0.0000001) <> 0 then
分别等于strtofloat(Edit1.Text)*100,trunc(strtofloat(Edit1.Text)*100)以及strtofloat(Edit1.Text)*100-trunc(strtofloat(Edit1.Text)*100)看看他们是不是和你预期的相等,一般在程序中浮点数都是以e来表示的