Hallo,
bei nachfolgendem Code bekomme ich Unterschiede zwischen D7 und XE2. Bei dem Single-Typ wird bei der formatierten Ausgabe bei XE2 falsch gerundet. Die Berechnung stimmt aber!
Code:
procedure TForm1.Button1Click(Sender: TObject);
var Code : integer;
lTF : TextFile;
lReal48 : Real48;
lSingle : Single;
lDouble : Double;
begin
Edit1.Text := '0.01';
AssignFile(lTF,'D:\Test.txt');
try
Rewrite(lTF);
Val(Edit1.Text,lReal48,Code);
Write(lTF,'Real48: '+ Edit1.Text + ' / 100 = ');
Writeln(lTF,lReal48 / 100 :1:4);
//D7 : result := 0.0001
//XE2: result := 0.0001
Val(Edit1.Text,lSingle,Code);
Write(lTF,'Single: '+ Edit1.Text + ' / 100 = ');
Writeln(lTF,lSingle / 100 :1:4);
//D7 : result := 0.0001
//XE2: result := 0.0000 <--!!!!
Val(Edit1.Text,lDouble,Code);
Write(lTF,'Double: '+ Edit1.Text + ' / 100 = ');
Writeln(lTF,lDouble / 100 :1:4);
//D7 : result := 0.0001
//XE2: result := 0.0001
finally
CloseFile(lTF);
end;
end;
Habt ihr dieses Problem auch schon bemerkt?
Der Code kommt in dem Projekt recht häufig vor... ein Workround ist also schwierig.
Mit freundlichen Grüßen,
Memex