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.
展开
 我来答
匿名用户
2012-05-26
展开全部
精度误差,可以根据精度镇定小数位数。
formatFloat('0.0',edt1 .Text)
formatFloat('0.#',edt1 .Text)
追问
请问要加在哪里?我把语句加在等号里,还是不行,而且后面不可以写edt1.text,因为他是str类型的亲,问题已经解决亲
半目是运气
2012-05-30 · TA获得超过211个赞
知道小有建树答主
回答量:752
采纳率:0%
帮助的人:352万
展开全部
建议你在程序内部,用整型数据,界面显示自己控制一下!

直接用浮点数,精度不好控制!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式