Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
Re: Real statt mit Exponent als ganze Zahl in String
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)] = '0' do 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)] = '0' do 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
|
|
Zitat
|