Hallo zusammen,
im Moment verwende ich nachfolgendes, weil am genauesten:
JasonDX's Vorschlag:
round((StrToFloat(s) * 2 + 0.00000000000001)) / 2) Edit1.Text:= '12,4999999999999999999' -> 12,5 -> erst ab der 19.Stelle falsch
Marc seine Funktion:
myround(StrToFloat(Edit1.Text)) Edit1.Text:= '12,2499999999999999' -> 12,5 -> ab der 16.Stelle falsch
grenzgaenger seine Funktion:
trunc((StrToFloat(Edit1.Text)) * 2 + 0.5) / 2 Edit1.Text:= '12,4999999999999999' -> 12,5 -> ab der 16.Stelle falsch
Prinzipiell lässt sich diese Ungenauigkeit mit diesem Konzept von Stringkonvertierung und Real wohl nicht lösen.
Ich vermute man müsste expliziet nur mit Integer und dessen Funktionen arbeiten um genauere Ergebnisse zu erreichen.
Da ich keine Summierungen verwende wo sich dann die evtl. Ungenauigkeiten summieren könnten, kann ich damit leben.
Danke an alle für die Unterstützung!