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;