Konvertierung double->int
-
Hi!
Meine Frage betrifft wohl eher ANSI C, auch wenn der Anlass in einem C++-Programm steckt:
Ich habe eine Funktion definiert:
uint32 randIntScale( const uint32& n ) {uint32 rc = Mrand()*n; return rc;} // integer in [0,n]
Mrand() liefert eine double-Zufallszahl [0..1].
Da bringt der Compiler (zu Recht) folgende Warnung
bla.h:104: Warnung: initialization to `unsigned int' from `double' bla.h:104: Warnung: argument to `unsigned int' from `double'
Da das Ergebnis nie >n werden kann, stört mich die Warnung dann doch - wie bekomme ich die weg?
-
Mache einen expliziten Cast um damit dem Compiler zu sagen:
Keine Sorge, ich weiß, was ich tue.uint32 rc = (uint32)Mrand()*n;
Besser ist vermutlich:
uint32 rc = (uint32)(Mrand()*n);
So wird es erst in Ganzahlen umgewandelt, nachdem mit n multipliziert wurde.
Oben wird erst das Ergebnis von Mran runtergerundet und dann mit n multipliziert.
-
Danke!