Einzelnen Beitrag anzeigen

Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#1

Ich dreh durch! wie kann das sein - Problem beim Runden.

  Alt 29. Jun 2007, 16:19
bei folgendem code kommt bei mir einmal 1.14 raus (obwohl 1.13 rauskommen soll) und bei der direkten variante 1.13 obwohl s1 und s2 beide male 2.26 ist und das der gleiche verdammte aufruf ist *Grml*.
bei allen anderen zahlen die ich damit so runde hat das super geklappt nur bei dieser konstellation nicht :-/. wenn man z.b. a[5] durch 0.82 und dafür a[6] durch .021 ersetzt klappts wieder?
ich dreh durch...

Delphi-Quellcode:
uses math;

procedure TForm1.Button1Click(Sender: TObject);
var
  s1, s2: double;
  i: Integer;
  a: array[0..6] of double;
begin
  s1:=0;
  s2:=2.26;
  a[0]:=0.20;
  a[1]:=0.27;
  a[2]:=0.22;
  a[3]:=0.27;
  a[4]:=0.27;
  a[5]:=0.81;
  a[6]:=0.22;
  for i:=0 to 6 do
  s1:=s1 + a[i];
  ShowMessage(FloatToStr(ceil((s1/2)*100)/100));
  Showmessage(FloatToStr(ceil((s2/2)*100)/100));
end;
  Mit Zitat antworten Zitat