
delphi中制作简单计算器,我用的float与str相互装换,可是只要是带小数点的运算都出错
比如3.2+4,返回的值却是3.599123321211,类似的值!求帮助!var欢迎使用小王怡计算器:T欢迎使用小王怡计算器;a,b,c,d:Single;n:Inte...
比如3.2+4,返回的值却是3.599123321211,类似的值!求帮助!
var
欢迎使用小王怡计算器: T欢迎使用小王怡计算器;
a,b,c,d :Single ;
n:Integer;
implementation
{$R *.dfm}
procedure T欢迎使用小王怡计算器.btn10Click(Sender: TObject);
begin
edt1 .Text :=edt1 .Text+ btn10.Caption ;
end;
procedure T欢迎使用小王怡计算器.btn11Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +'-';
end;
procedure T欢迎使用小王怡计算器.btn12Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn12.Caption;
end;
procedure T欢迎使用小王怡计算器.btn13Click(Sender: TObject);
begin
n:=4;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn14Click(Sender: TObject);
begin
n:=3;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn15Click(Sender: TObject);
begin
n:=2;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn16Click(Sender: TObject);
begin
n:=1;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn17Click(Sender: TObject);
begin
a:=StrToFloat(edt1 .Text) ;
edt1.Text:=FloatToStr( Sqrt(a));
end;
procedure T欢迎使用小王怡计算器.btn18Click(Sender: TObject);
begin
a:=StrToFloat(edt1 .Text) ;
edt1.Text:=FloatToStr(a/100);
end;
procedure T欢迎使用小王怡计算器.btn19Click(Sender: TObject);
begin
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn1Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn1.Caption;
end;
procedure T欢迎使用小王怡计算器.btn20Click(Sender: TObject);
begin
b:=StrToint(edt1.Text);
case n of
1:edt1.Text:=FloatToStr(a+b);
2:edt1.Text:=FloatToStr(a-b);
3:edt1.Text:=FloatToStr(a*b);
4:if strtoint(edt1.Text)=0 then
begin
showmessage('除数不能为零!');
exit;
end
else
edt1.Text:=FloatToStr(a/b);
end;
end;
procedure T欢迎使用小王怡计算器.btn2Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text+btn2.Caption ;
end;
procedure T欢迎使用小王怡计算器.btn3Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn3.Caption;
end;
procedure T欢迎使用小王怡计算器.btn4Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn4.Caption;
end;
procedure T欢迎使用小王怡计算器.btn5Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn5.Caption;
end;
procedure T欢迎使用小王怡计算器.btn6Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn6.Caption;
end;
procedure T欢迎使用小王怡计算器.btn7Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn7.Caption;
end;
procedure T欢迎使用小王怡计算器.btn8Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn8.Caption;
end;
procedure T欢迎使用小王怡计算器.btn9Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn9.Caption;
end;
end. 展开
var
欢迎使用小王怡计算器: T欢迎使用小王怡计算器;
a,b,c,d :Single ;
n:Integer;
implementation
{$R *.dfm}
procedure T欢迎使用小王怡计算器.btn10Click(Sender: TObject);
begin
edt1 .Text :=edt1 .Text+ btn10.Caption ;
end;
procedure T欢迎使用小王怡计算器.btn11Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +'-';
end;
procedure T欢迎使用小王怡计算器.btn12Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn12.Caption;
end;
procedure T欢迎使用小王怡计算器.btn13Click(Sender: TObject);
begin
n:=4;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn14Click(Sender: TObject);
begin
n:=3;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn15Click(Sender: TObject);
begin
n:=2;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn16Click(Sender: TObject);
begin
n:=1;
a:=StrToFloat(edt1 .Text) ;
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn17Click(Sender: TObject);
begin
a:=StrToFloat(edt1 .Text) ;
edt1.Text:=FloatToStr( Sqrt(a));
end;
procedure T欢迎使用小王怡计算器.btn18Click(Sender: TObject);
begin
a:=StrToFloat(edt1 .Text) ;
edt1.Text:=FloatToStr(a/100);
end;
procedure T欢迎使用小王怡计算器.btn19Click(Sender: TObject);
begin
edt1 .Clear ;
end;
procedure T欢迎使用小王怡计算器.btn1Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn1.Caption;
end;
procedure T欢迎使用小王怡计算器.btn20Click(Sender: TObject);
begin
b:=StrToint(edt1.Text);
case n of
1:edt1.Text:=FloatToStr(a+b);
2:edt1.Text:=FloatToStr(a-b);
3:edt1.Text:=FloatToStr(a*b);
4:if strtoint(edt1.Text)=0 then
begin
showmessage('除数不能为零!');
exit;
end
else
edt1.Text:=FloatToStr(a/b);
end;
end;
procedure T欢迎使用小王怡计算器.btn2Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text+btn2.Caption ;
end;
procedure T欢迎使用小王怡计算器.btn3Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn3.Caption;
end;
procedure T欢迎使用小王怡计算器.btn4Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn4.Caption;
end;
procedure T欢迎使用小王怡计算器.btn5Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn5.Caption;
end;
procedure T欢迎使用小王怡计算器.btn6Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn6.Caption;
end;
procedure T欢迎使用小王怡计算器.btn7Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn7.Caption;
end;
procedure T欢迎使用小王怡计算器.btn8Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn8.Caption;
end;
procedure T欢迎使用小王怡计算器.btn9Click(Sender: TObject);
begin
edt1 .Text := edt1 .Text +btn9.Caption;
end;
end. 展开
2个回答
2012-05-26
展开全部
精度误差,可以根据精度镇定小数位数。
formatFloat('0.0',edt1 .Text)
formatFloat('0.#',edt1 .Text)
formatFloat('0.0',edt1 .Text)
formatFloat('0.#',edt1 .Text)
追问
请问要加在哪里?我把语句加在等号里,还是不行,而且后面不可以写edt1.text,因为他是str类型的亲,问题已经解决亲
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询