Wie rundet man eine Zahl in C?

3 Antworten

Musst die Nachkommastellen mit angeben. Ich bin mir nicht sicher ob das in C so geht, wie ich es jetzt mache. Du hast eine Variable "Nummer" mit der float-Zahl 4.36173. Die gibst du so aus: printf("%f.2", Nummer); . Dann hast du 2 Nachkommastellen. Wie man rundet weiß ich nicht, man könnte aber eine Schleife machen, die prüft, was für eine Zahl danach kommt. Könnte man machen, indem man die eine Zahl mit 2 und die gleiche mit 3 Nachkommastellen dividiert, dann vergleicht, ob das Ergebnis größer/gleich oder kleiner 0,005 ist. Vielleicht gibt es auch eine Funktion dafür, die wäre mir aber nicht bekannt. Ich hoffe ich konnte dir helfen ;)


wyoxx  15.10.2015, 18:49

Du kannst dann auch mit einer und zwei Nachkommastellen machen, um auf 4.4 zu kommen.

0

Da 4.4 keine korrekte Rundung von 4.34542 auf nur eine Dezimalstelle darstellt, kann printf() dir hier nicht helfen (denn printf() rundet korrekt).

Du musst also

  • entweder die Zahl 4.4 explizit drucken
  • oder deine Rundungsregel zunächst mal so spezifizieren, dass sie definiert ist für alle nur denkbaren float-Werte. Erst wenn wir diese Definition kennen, kann man sagen, welcher Code sie geschickt genug implementiert.

Muss du die Round Funktion selbst programmieren?

Wenn nicht, dann konvertiere den Float in ein String, splitte es nach dem "," oder "." und guck welche Zahl in der Stelle length - 1 ist, wenn >= 5 muss length - 2 um eins inkrementiert werden.

Gruß