Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Real statt mit Exponent als ganze Zahl in String

  Alt 23. Jun 2009, 14:50
man könnte jetzt erstmal den Wert über einen Expontialrechnung so veschieben, daß der bestmöglich in einen Int64 reinpaßt, dann IntToStr und zum Schluß nur noch ein paar Nullen und eventuell noch 'nen Komma reinbauen,

oder
Delphi-Quellcode:
E := 1.23456e-8;

If (E < 1e-18) or (E > 1e18) Then Begin
  S := FloatToStr(E);
  i2 := Pos('e', LowerCase(S));
  If i2 > 0 Then Begin
    i := StrToInt(Copy(S, i2 + 1, 8));
    Delete(S, i2, 8);
    S := StringReplace(S, DecimalSeparator, '', []);
    If i > 0 Then Begin
      While Length(S) <= i do S := S + '0';
      If Length(S) > i Then Insert(DecimalSeparator, S, i + 2);
    End Else Begin
      For i2 := 1 to -i do S := '0' + S;
      Insert(DecimalSeparator, S, 2);
    End;
  End;
  If Pos(DecimalSeparator, S) > 0 Then Begin
    While S[Length(S)] = '0do Delete(S, Length(S), 1);
    If S[Length(S)] = DecimalSeparator Then Delete(S, Length(S), 1);
  End;
End Else Begin
  S := StringReplace(Format('%.18n', [E]), ThousandSeparator, '', [rfReplaceAll]);
  If Pos(DecimalSeparator, S) > 0 Then Begin
    While S[Length(S)] = '0do Delete(S, Length(S), 1);
    If S[Length(S)] = DecimalSeparator Then Delete(S, Length(S), 1);
  End;
End;

Edit1.Text := S;
$2B or not $2B
  Mit Zitat antworten Zitat