Einzelnen Beitrag anzeigen

Memex

Registriert seit: 21. Okt 2010
7 Beiträge
 
#1

XE2 Unterschied bei Single Ausgabe zu D7

  Alt 6. Dez 2011, 17:27
Delphi-Version: XE2
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
  Mit Zitat antworten Zitat