Einzelnen Beitrag anzeigen

Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: kaufmännisch auf 0,5 oder 1 runden

  Alt 25. Mai 2008, 17:19
Zitat von juergen:
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!
haste kein Vertrauen zur primitivsten Version? *sfg* s.o.
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat