AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FloatToStrF Rundungsfehler ?

Ein Thema von egentur · begonnen am 28. Jan 2021 · letzter Beitrag vom 5. Feb 2021
 
Incocnito

Registriert seit: 28. Nov 2016
233 Beiträge
 
#16

AW: FloatToStrF Rundungsfehler ?

  Alt 2. Feb 2021, 11:01
Das Problem hast du mit anderen Zahlen auch bei 2 oder 3 Nachkommastellen.
Ist dir vielleicht nur noch nicht aufgefallen.
Einzig bei 1 Nachkommastelle hättest du das Problem nicht, da es da nur X,5 gibt,
welches in Double (und Float und Extended und whatever) unproblematisch ist.

Du brauchst halt eine generelle Lösung für das Problem und da hilft es dir nur
zu verstehen, warum das passiert. Was du am Ende im Quelltext schreiben musst,
kann dir so vermutlich keiner sagen.

Erst-Bester-Versuch: Addiere ein kleines Diff auf die Zahl drauf.
Wenn du als String immer 5 Nachkommastellen bekommst, dann rechne 1 auf die sechste Nachkommastelle.
z.B. 0,50015 + 0,000001 = 0,500151 ... wenn der Computer
0,500149999999999 davon macht würde er mit 0,50015099999999 arbeiten ...
wenn man den Wert rundet (durch die Anzeige) dann kommt das "richtige" bei rum.
Auch für das Abrunden wäre das unproblematisch, da dir der String ja immer 5 Nachkommastellen liefert.
auch bei 0,50014 wird 0,500141 daraus, welches genauso abgerundet wird wie der "echte" Wert.

[Edit:] Aso, um deine Frage zu beantworten. Alleine durch lustiges Konvertieren oder umspeichern

Delphi-Quellcode:
DerWert := StrToFloatDef(WertAusSensor(), 0); // <- Hier kommt "0,50015"
ShowMessage(FloatToStrF(DerWert, ffFixed, 6, 4));
... ist schon was anderes als ...

ShowMessage(FloatToStr(0.50015, ffFixed, 6, 4));
Liebe Grüße
Incocnito

Geändert von Incocnito ( 2. Feb 2021 um 11:05 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz