程序代码如下:procedure TForm1.Button3Click(Sender: TObject);
var
cp1,cp2:double;
r1,r2:double;
begin
r1:=293.00;
r2:=8056.72; cp1:=r1+r2; //293.00+8056.72=8349.72
cp2:=8349.72; if cp1<>cp2 then
begin
showmessage('cp1<>cp2');
showmessage('cp1='+FormatFloat('#0.00',cp1)+'====== cp2='+FormatFloat('#0.00',cp2));
end
else
begin
showmessage('cp1=cp2');
showmessage('cp1='+FormatFloat('#0.00',cp1)+'====== cp2='+FormatFloat('#0.00',cp2));
end;
运行后的结果是cp1<>cp2,不知道是什么原因,是DELPHI的浮点数计算问题吗?
这样的话,对两个浮点数进行比较只能是将他们格式化为字符串后再进行比较了?还有更好的方法吗?
请高手解答。
谢谢。
var
cp1,cp2:double;
r1,r2:double;
begin
r1:=293.00;
r2:=8056.72; cp1:=r1+r2; //293.00+8056.72=8349.72
cp2:=8349.72; if cp1<>cp2 then
begin
showmessage('cp1<>cp2');
showmessage('cp1='+FormatFloat('#0.00',cp1)+'====== cp2='+FormatFloat('#0.00',cp2));
end
else
begin
showmessage('cp1=cp2');
showmessage('cp1='+FormatFloat('#0.00',cp1)+'====== cp2='+FormatFloat('#0.00',cp2));
end;
运行后的结果是cp1<>cp2,不知道是什么原因,是DELPHI的浮点数计算问题吗?
这样的话,对两个浮点数进行比较只能是将他们格式化为字符串后再进行比较了?还有更好的方法吗?
请高手解答。
谢谢。
//相等
通过运行,得出该条件也成立。
那这种判断又怎么处理呢?
我看只有转换成字符串比不会出问题。
各位高手 ,还有好的解决办法吗?
我也遇到过。不过我当时不知道用什么。我用FloatToStr转化为字符串比较的。
好像可以哦。^_^