MudGuard: C++ Frage zu ceil()

Beitrag lesen

Hi,

int e, a;   // Stückzahl, Verteilung (allocation)
  p = ceil( e/a );
Laut Beschreibung sollte ceil() doch in jedem Fall aufrunden.

Tut es auch.

Zuerst wird e/a berechnet. Beides sind int, also wird nach int-Regeln gerechnet: 20/7 ist demnach 2, der Rest fällt bei int-Berechnung unter den Tisch.

Dann kommt ceil ins Spiel. Da ceil ein float erwartet, wird aus der 2 eine 2.0, ceil von 2.0 ist 2.0 ...

Jetzt tippe ich darauf, dass aus int/int kein float p wird, obwohl p als float deklariert wurde.

Die Umwandlung in float findet später statt als Du es gerne hättest.

Und wenn ja, wie bekomme ich den Restwert von e/a wenn der Modulus keine float-Variablen akzeptiert?

So, wie Du es bei

r = e%a;

bereits machst.

Oder wie bekomme ich einen float-Wert aus den beiden Integern?

Mindestens einen der zwei Werte zu float umwandeln (z.B. durch cast oder durch Zuweisung an eine float-Variable) vor der Division.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.