atof(m_strZahl); umwandlungsproblem
-
Hallo.
Ich hole mir einen Fließkommawert aus einer INI Datei heraus, den ich später zum berechnen brauche. Wenn ich den String dann mit atof() in eine Fließkommazahl umwandeln will, macht er das zwar, aber da kommen gaaanz komische ergebnisse heraus.
Wenn ich ihm z.b. 8.45 übergebe, bekomme ich nach der Umwandlung sowas wie 8.4499998
wenn das jetzt irgendwelche krummen nachkommastellen wären, die ich ihm da übergeben würde, könnte ich das ja wegen dem runden so einigermaßen noch nachvollziehen, aber hier ist weder was zu runden noch sonst was!!!
wie kann ich das umgehen, dass ich meinen original wert bekomme?
ps: mit nur strings kann ich nicht arbeiten
-
Ich fürchte, da stößt du an die Darstellungsgenauigkeit von float (btw, egal welchen Gleitkommatyp du verwendest, den exakten Wert 8.45 wird du dort nicht reinpacken können - das ist nämlich ein periodischer Binärbruch).
-
vielleicht hilfts, wenn du statt 'float' 'double' nimmst. ist zwar auch nicht genau, könnte aber besser sein.
-
Ein Vergleich mit floating-Werten muss immer mit einem "Epsilon" gemacht werden... oder Du verwendest Festkommazahlen oder eine passende Bibliothek:
http://www.apfloat.org/apfloat/