Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#11

Re: Schleife für StringReplace

  Alt 14. Jun 2006, 15:43
da die Abbruchbedingung der Funktion falsch ist, wenn sich in keine kleinere Einheit mehr umrechnen lässt, hier eine korrekte Version:


Delphi-Quellcode:
function xFloatToSym(Value : Extended) : String;
const
  S_UNITS = 'afpnµm kMGTP';

var Wert: Extended;
    Einheit : Integer;
begin
wert := Value;
Einheit := 7;
while ( wert < 1 ) and (Einheit > 1) do begin
  Wert := Wert * 1000;
  dec(Einheit);
end;

while (Wert >= 1000) and (Einheit < 12) do begin
  Wert := Wert / 1000;
  inc(Einheit)
end;
Result := Format('%g%s', [Wert, S_Units[Einheit]]);

end; // xFloatToSym
Delphi-Quellcode:
st := FloatToSym(0.00000000000002);
Showmessage(st);

st := xFloatToSym(0.00000000000002);
Showmessage(st);


st := FloatToSym(1000000000000000000);
Showmessage(st);

st := xFloatToSym(1000000000000000000);
Showmessage(st);

st := FloatToSym(0.00000000000000000001);
Showmessage(st);

st := xFloatToSym(0.00000000000000000001);
Showmessage(st);
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat