Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - StrToFloat
Dieter Hengst - Mi 26.01.11 17:31
Titel: StrToFloat
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 - Mi 26.01.11 17:34
Hi und :welcome:
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; |
jaenicke - Mi 26.01.11 17:50
Oder beim Aufruf von FloatToStrF statt d einfach RoundTo(d, -2) benutzen.
Dieter Hengst - 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 - 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; |
Xion - 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; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!