Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.04.2009, 03:28

[C++] Float auf Ganzzahl runden *Erledigt*

Hi Spieleprogrammierer! Ich suche nach einer Möglichkeit einen Float auf einen Integer zu "runden". Wenn ich beispielsweise static_cast<int>(5.7f) mache, erhalte ich 5, dabei sollte es gerundet ja schließlich 6 sein. Gibt es in C++ die Möglichkeit Zahlen zu runden?

**Edit**

Bin jetzt selbst drauf gekommen! Ich kann dem zu rundenden Wert einfach 0.5 hinzu addieren und anschließend casten, dann wird es anständig gerundet. Das ich da nich schon vorher drauf gekommen bin ...

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

2

16.04.2009, 06:06

alternativ kannst du auch round() aus cmath benutzen.
<< an dieser Stelle ist eine Signatur verstorben >>

3

16.04.2009, 12:22

Zitat von »"the[V«

oid"]alternativ kannst du auch round() aus cmath benutzen.
Es gibt kein round() in <cmath>, höchstens ein ceil() und ein floor(). Aber mit floor(x + 0.5) erreicht man das Gleiche.

4

16.04.2009, 12:53

Zitat von »"Nexus"«

Zitat von »"the[V«

oid"]alternativ kannst du auch round() aus cmath benutzen.
Es gibt kein round() in <cmath>, höchstens ein ceil() und ein floor(). Aber mit floor(x + 0.5) erreicht man das Gleiche.
was aber das gleiche ist wie static_cast<int>(x+.5)

5

16.04.2009, 13:20

Zitat von »"Genion"«

was aber das gleiche ist wie static_cast<int>(x+.5)
Fast. ;)

floor() gibt eine Fliesskommazahl zurück (je nach Überladung float, double oder long double). Ich weiss auch nicht, ob sich die beiden von der Performance her ungefähr gleich verhalten. Aber wenn man sowieso einen Integer braucht, lohnt sich static_cast sicher mehr.

p0llux

Treue Seele

Beiträge: 101

Wohnort: Aachen

Beruf: HiWi (theo. Inf.)

  • Private Nachricht senden

6

17.04.2009, 04:00

Naja, Fliesskommazahlen ab- und aufrunden ist sehr einfach. Man muss sich nur anschauen, wie die Zahlen binär kodiert sind, dann ist klar wie es geht. Ich denke nicht, dass die Implementation von floor oder ceil das viel umständlicher ist.

Werbeanzeige