procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,d: double;
begin
  a:= 15.0794;
  b := 227.38830436;
  d:=a*a-b;
  if d<>0.0 then
    showmessage('不等')
  else showmessage('等');
end;上述例子实际上 d=0,可是显示信息为‘不等’,而我需要的是正确的结果,怎么解决

解决方案 »

  1.   

    浮点数是不能这样比较的,因为浮点数是不精确数,是进似数,所以你可以可以取整后再比较,或者按照 jieguo(天下有眼) 的方法做,还有一个法子:
    一般在做金融计算的时候,为了避免这种问题,用Currency类型,固定四位小数,是最简单的解决办法。你可以把Currency当浮点数来用。
      

  2.   

    计算最小平方圆时,如果所给得(xi,yi)在同一条直线上时,是无法得到
    圆的,也就是说计算中心点时 x0= a/b,b的值应该为0。
    (xi,yi)在不在同一条直线上,b也可能很小, jieguo说的方法就不
    适用了
      

  3.   


      if abs(d)>0.00000001 then
        showmessage('不等')
      else 
        showmessage('等');