Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Mit C: float-Werte auf drei Nachkommastellen runden

martinx24 / 4 Antworten / Baumansicht Nickles

Hallo!

Ich habe folgendes Problem mit der Programmiersprache C:
Ich möchte zwei float-Variablen vergleichen. Dabei soll der Vergleich allerdings nur bis zur dritten Nachkommastelle beschränkt sein und die dritte Nachkommastelle durch die vierte Nachkommastelle richtig auf- bzw. abgerundet werden.

Meiner Meinung nach könnte ich die Variablen an Zwischenvariablen gerundet übergeben und diese dann vergleichen. Doch wie kann ich den Zwischenvariablen gerundete Werte übergeben?

Weiß jemand eine Lösung?
Danke!

bei Antwort benachrichtigen
mr.escape martinx24 „Mit C: float-Werte auf drei Nachkommastellen runden“
Optionen

Konvertiere die zahlen wie hier von f nach rund_f:

float f;

double rund_f;
rund_f=floor(f*1000.0+0.5);


mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
Borlander martinx24 „Mit C: float-Werte auf drei Nachkommastellen runden“
Optionen

Wenn Du die Gerundeten Werte nur vergleichen, brauchst Du keine \"Zwischenvariablen\"...

Dann kannst Du einfach so vergleichen:
if(floor(f1*1000.0+0.5)==floor(f2*1000.0+0.5)){...}

CU Borlander

bei Antwort benachrichtigen
Borlander martinx24 „Mit C: float-Werte auf drei Nachkommastellen runden“
Optionen

Wenn Du die Gerundeten Werte nur vergleichen, brauchst Du keine \"Zwischenvariablen\"...

Dann kannst Du einfach so vergleichen:
if(floor(f1*1000.0+0.5)==floor(f2*1000.0+0.5)){...}

CU Borlander

bei Antwort benachrichtigen
martinx24 Nachtrag zu: „Mit C: float-Werte auf drei Nachkommastellen runden“
Optionen

DANKE an euch beide!
Mittlerweile habe ich das Problem in den Griff bekommen. :-)
Mit der ceil() Funktion und der Multiplikation mit 1000 hatte ich gestern schon experimentiert, doch auf die Idee mit den 0.5 wäre ich ohne Eure Hilfe nicht gekommen.
Danke nochmal! Martin

bei Antwort benachrichtigen