| Autor |
Beitrag |
Dieter Hengst
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 26.01.11 17:31
Die Anweisung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var d: double; s: string; begin d := StrToFloat('1.15'); s := FloatToStrF(d,ffFixed,19,1) end; | liefert den String s = '1.1' zurück und nicht '1.2'.
Bemerkung: d muss leider double sein und nicht extended.
Was kann ich tun?
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 26.01.11 17:34
Hi und
Floats sind immer etwas ungenau. Was du machen kannst wäre z.B.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var d: double; i: integer; s: string; begin d := StrToFloat('1.15'); i := round(d*100); s := FloatToStr(i/100) end; |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: Dieter Hengst
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 26.01.11 17:50
Oder beim Aufruf von FloatToStrF statt d einfach RoundTo(d, -2) benutzen.
Für diesen Beitrag haben gedankt: Dieter Hengst
|
|
Dieter Hengst 
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 26.01.11 17:53
Ich brauche leider eine allgemeine und zentrale Lösung, wie z.B. eine Modifikation von StrToFloat bzw. FloatToStrF.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 26.01.11 18:15
Dann schreibs dir doch... Delphi-Quelltext 1: 2: 3: 4: 5:
| function FloatToStrFEx(Value: Extended; Format: TFloatFormat; Precision, Digits: Integer): string; begin Result := FloatToStrF(RoundTo(Value, -Digits - 1), Format, Precision, Digits, FormatSettings); end; |
Für diesen Beitrag haben gedankt: Dieter Hengst
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 26.01.11 18:24
Oder wenn du meins nimmst:
Delphi-Quelltext 1: 2: 3: 4:
| function DoubleToStr(Input: double): String; begin Result := FloatToStr( round(Input*100)/100 ) end; |
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: Dieter Hengst
|
|
|