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

27.12.2008, 19:20

Nachkommastellen abschneiden

Hi Leute,

eine kurze Frage:
ich habe folgende Zeile

Quellcode

1
player_dmg = static_cast<int>( player->strength/2 ) * static_cast<int>(player_attack_speed_counter); // calculate damage


Beim letzten cast würde ich das gerne so ändern, dass die Nachkommastellen einfach abgeschniten werden ( bei nem cast zu einem int wird ja gerundet)
Wie stelle ich das am klügsten an?
In diesem Topic wurde geraten die zugehörigen Warnungen zu "Ungenauigkeiten bei casting" abzuschalten, aber is dies eine schöne Lösung?
http://spieleprogrammierer.de/phpBB2/viewtopic.php?t=5630

bye hiob

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

27.12.2008, 19:22

PCs runden nicht, sondern schneiden nur (sind ja auch keine Weicheier!)

P.S: 1.9 wird also zu 1, wenn man es von z.B. float zu int castet.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

27.12.2008, 19:47

Ja es ist wie Nox es sagt. Es wird immer "abgerundet", was nur ein schöneres Wort für abgeschnitten ist.

Socke

4

27.12.2008, 19:52

Zitat

P.S: 1.9 wird also zu 1, wenn man es von z.B. float zu int castet.


lol, ehrlich??
Aber warum castet man dann überhaupt? Ich mein, die Warnung is doch egal, wenn man sie zur Kenntnis genomen hat. Und vor allem: warum soll man dann static_cast anstatt (int) nehmen, wenns doch eh das gleiche macht?

Unfassbar, dass ich das nie gemerkt hab^^

bye

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

5

27.12.2008, 19:56

static_cast ist C++. (int) ist C. In diesem Fall hätte ich wohl einen Constructor cast gemacht, also int(...). Die C casts sind sowieso hässlich^^ Du castest, damit die Warnung nicht auftaucht und damit du das Verhalten genau unter Kontrolle hast.

Socke

6

27.12.2008, 19:57

Alles klar, danke euch :o

bye

7

28.12.2008, 15:33

Hm und sonst castest du auch. Du castest immer wenn du zwischen zwei typen umwandelnst. Ob per implizit-cast oder explizit-cast ist halt der unterschied ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige