Einzelnen Beitrag anzeigen

Incocnito

Registriert seit: 28. Nov 2016
223 Beiträge
 
#27

AW: FloatToStrF Rundungsfehler ?

  Alt 5. Feb 2021, 15:30
Hier
http://docwiki.embarcadero.com/Libra....Default8087CW
steht, dass der Default-Wert $1332 also 4714 sein soll.

Aber auch bei mir ist beim Start dort schon ein anderer Wert enthalten.
Indy? QuickReport? Apollo Datenbank? Jedi? Keine Ahnung, wer den Wert verstellt.

Für deinen Fall:
4722 = 0001 0010 0111 0010
Rounding Contol = 00
Precission Control = 10 = Double Pressision 53bits
---
4978 = 0001 0011 0111 0010
Rounding Contol = 00
Precission Control = 11 = Double Extended Pressision 64bits

Eine höhere Genauigkeit führt hier nur zu einem anderen Ergebnis.
Meiner Meinung nach wird zwar bei erhöhter Genauigkeit mathematisch richtig rundet,
aber bei Einschaltung des gesunden Menschenverstandes eher falsch rundet.
Aufgerundet wird ja immer bei "5", aber durch die "Ungenauigkeit" des
PC steht dort "4,99999999", also muss ich trotzdem aufrunden, eben
weil das ja nur ein falscher Ausgagswert Aufgrund der technischen Gegebenheiten ist.
Außerdem um darauf wieder zurück zu kommen ist das jetzt der Fall für
deine 0,50015 ... für andere Zahlen sieht das wieder anders aus und du kannst
nicht "alle" Möglichkeiten testen (behaupte ich mal).

Das unterschiedliche Verhalten kann also durch das 8087 ControlWord erklärt werden.
Trotzdem empfehle ich (wie du es ja schon gemacht hast) das einfach zu umgehen.

LG Incocnito
  Mit Zitat antworten Zitat