L
Liyue
Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
以下是二段内容相同的delphi程序(用delphi5编辑),
第一段程序,计算exp(100)-1/exp(-100),理论上结果应为零。
但用PⅢ运行实际结果不为零?!为什么?!
我用老式“586”计算机”,得到的结果却为零!!!
这样就有一个残酷的推论:
推论:三年前我们用“586”计算机开发的软件在PⅢ上可能出现错误结果!!!
如果这个软件用于楼房设计,那后果将.....当心啊,朋友!
第二段程序,计算exp(200)-1/exp(-200),理论上结果应为零。
用PⅢ运行实际结果也为零。
为什么数字大了,结果反而正确了呢?!!!
请大虾指点迷津,谢谢!!!
*******************
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:double;
begin
c:=exp(-100);
a:=exp(100);
b:=1/c;
edit1.Text:=floattostr(a);//运行结果:2.68811714181614E43
edit2.Text:=floattostr(b);//运行结果:2.68811714181614E43
edit3.Text:=floattostr(a-b);//运行结果:4.95176015714152E27,为什么???
//但在586计算机上运行结果为0;为什么???
end;
*******************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:double;
begin
c:=exp(-200);
a:=exp(200);
b:=1/c;
edit1.Text:=floattostr(a);//运行结果:7.22597376812575E86
edit2.Text:=floattostr(b);//运行结果:7.22597376812575E86
edit3.Text:=floattostr(a-b);//运行结果:0为什么变量增加了,结果反而变对了???
end;
以下是二段内容相同的delphi程序(用delphi5编辑),
第一段程序,计算exp(100)-1/exp(-100),理论上结果应为零。
但用PⅢ运行实际结果不为零?!为什么?!
我用老式“586”计算机”,得到的结果却为零!!!
这样就有一个残酷的推论:
推论:三年前我们用“586”计算机开发的软件在PⅢ上可能出现错误结果!!!
如果这个软件用于楼房设计,那后果将.....当心啊,朋友!
第二段程序,计算exp(200)-1/exp(-200),理论上结果应为零。
用PⅢ运行实际结果也为零。
为什么数字大了,结果反而正确了呢?!!!
请大虾指点迷津,谢谢!!!
*******************
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:double;
begin
c:=exp(-100);
a:=exp(100);
b:=1/c;
edit1.Text:=floattostr(a);//运行结果:2.68811714181614E43
edit2.Text:=floattostr(b);//运行结果:2.68811714181614E43
edit3.Text:=floattostr(a-b);//运行结果:4.95176015714152E27,为什么???
//但在586计算机上运行结果为0;为什么???
end;
*******************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:double;
begin
c:=exp(-200);
a:=exp(200);
b:=1/c;
edit1.Text:=floattostr(a);//运行结果:7.22597376812575E86
edit2.Text:=floattostr(b);//运行结果:7.22597376812575E86
edit3.Text:=floattostr(a-b);//运行结果:0为什么变量增加了,结果反而变对了???
end;