Einzelnen Beitrag anzeigen

rabatscher

Registriert seit: 13. Dez 2007
Ort: Bruck an der Mur
69 Beiträge
 
#6

AW: FormatFloat 32bit / 64bit

  Alt 23. Apr 2024, 15:27
Interessanterweise wird hier Currency verwendet, was bei diesem Wert keine Differenz in der internen Darstellung aufweist.
Ah ja, das scheint sich dann seit Delphi 2010 geändert zu haben... Extended wurde also "gecancelt"....
Interessant, dass Delphi hier auf den unwahrscheinlichsten Datentypen zurück greift...

Das Setzen des CPU control words würde übrigens funktionieren:

zwei buttons auf ne form

Code:
procedure SetDoublePrecission;
var fpuCtrlWord: word;
begin
     // set only double precission for compatibility
     fpuCtrlWord := Get8087CW;
     // set bits 8 and 9 to "10" -> double precission calculation instead of extended!
     fpuCtrlWord := fpuCtrlWord or $0300;
     fpuCtrlWord := fpuCtrlWord and $FEFF;
     Set8087CW(fpuCtrlWord);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  LvTemp: Variant;
  LsTemp: string;
  orig : word;
begin
  orig := Get8087CW;
  if Sender = Button1 then
     SetDoublePrecission;
  LvTemp := Extended(405.405);
  LsTemp := FormatFloat('#,0.00;-#,0.00', LvTemp);
  ShowMessage(LsTemp);

  Set8087CW(orig);
end;
  Mit Zitat antworten Zitat