1. 程式人生 > >計算機處理浮點數時的誤差處理技巧

計算機處理浮點數時的誤差處理技巧

通常計算機在處理浮點數時,會產生誤差,下面介紹一種方法,可消除部分誤差的產生。如:
var
  a,b,c:real;
begin
  a := 68;
  b := 5.6;
  c := trunc(a*b*10)/10;
  ShowMessage(floatToStr(c));
end;
這個算式的正確結果應該是:380.8,但你試著用計算機執行一下看看結果是什麼?奇怪,怎麼是380.7呢?呵呵,用下面我教你的方法,計算結果就為380.8了。
var
  a,b,c:real;
begin
  a := 68;
  b := 5.6;
  c := trunc(a*b*10+0.00001)/10;
  ShowMessage(floatToStr(c));
end;

在算式中加個足夠小的小數,理論上不會對你的正確結果造成影響,但它確消除了誤差,不信你試試。