Float speichern, einlesen und runden
-
Hi!
Ich hab einen Floatwert
1.1wenn ich den in eine Datei schreibe(binär) und wieder lese,
kommt:
1.10000002435
raus..wie kann ich diese zahl auf 2 Nachkommastellen runden??
http://www.tutorials.de/forum/borland-cbuilder-und-vcl/218506-float-auf-2-nachkommastellen-begrenzen.html
hat mir nich geholfen :<wie gehts noch?? :<
danke schonmal :>
-
Hallo
floats und Fließkommatypen allgemein kann man nicht sinnvoll runden, das ist technisch begründet.
Sondern es ist vollkommen ausreichend die Ausgabe der Werte für den Uer zu runden, und das geht mit den Funktionen FloatToStr und Konsorten. Siehe SuFu und BCB-Hilfe.bis bald
akari
-
GerundeterFloat=SimpleRoundTo(Deinfloat, -2);
und nicht vergessen:
#include "math.hpp"
-
Was das Problem aber nicht löst...
Es gibt Werte, die sich einfach prinzipbedingt nicht abbilden lassen. Da kannst Du runden, so lange Du willst. Bei der Ausgabe entsprechend zu formatieren reicht völlig aus. Und da man das sowieso machen muss, kann man sich das Runden auch gleich ganz sparen.
-
Hi,
in dem Zusammenhang gleich noch ne Frage, gibts in C++ irgend eine Funktion die für mathematisch richtiges Runden zuständig ist, also ich meine jetzt auf ganze Zahlen. Sicher ists kein überragendes Problem, das selber zu programmieren, aber wenns da was gibt würde ich gerne die offizielle Methode nehmen. Delphi hat ja z.B. ne Rundungsfunktion.
Gruß Mümmel
-
Da die Nachkommstellen beim Casten nach int verloren gehen...
double test; ... test = (int) (test + 0.5);
Mit den integrierten Rundungsfunktionen sollte man vorsichtig sein. Viele runden nach dem amerkanischen System und das ist etwas anders als hier.
Grüße Joe_M.