Da
trunc als Ergebnis
int64 liefert ist die Routine für wirklich große Zahlen unbrauchbar, weiter ist
d := int() nicht übersetzbar und für negative Werte ist der Resultstring leer. Hier eine modifizierte Routine
Delphi-Quellcode:
Function ExtendedToString(v : Extended; ThousandSeparator : Char) : String;
var
i : Integer;
d: extended;
sign: string;
Begin
if v<0 then begin
v := -v;
sign := '-';
end
else sign := '';
Result :='';
i:=0;
while v>0.01 do begin
d := int(0.5+frac(v/10)*10);
v := int(v/10);
Result := IntToStr(round(d))+Result;
inc(i);
if (i mod 3=2) and (ThousandSeparator<>#0) then
Result := ThousandSeparator+Result;
end;
Result := sign+Result;
end;