explizite Typumwandlung (3/3)

Das schon erwähnte Problem bei der Integerdivision läßt sich mit explizitem Casting einfach lösen, indem temporär ein Operand in eine Fließkommazahl umgewandelt wird und dann nach der schon erwähnten Regel das ganze Ergebnis als Fließkommazahl berechnet wird. Literale Integer-Konstanten können z. B. durch Anhängen eines Punktes in eine Fließkommazahl umgewandelt werden. Weitere Möglichkeiten im entsprechenden Kapitel über literale Konstanten.

  int i = 7, j = 3, k;

  double x;

k = i / j; // 7/3 = 2 ==> k = 2 x = i / j; // 7/3 = 2 ==> x = 2.0 !!! x = (float) i / j; // 7.0 / 3.0 = 2.3333 ==> x = 2.333 x = float(i) / j; // 7.0 / 3.0 = 2.3333 ==> x = 2.333 x = 1.0 / 3 // 1.0 / 3.0 = 0.3333 ==> x = 0.333 x = 2.9438; k = x + i // 2.9438 + 7.0 = 9.9438 ==> k = 9 k = int(x) + i // 2 + 7 = 9 ==> k = 9 gleiches Ergebnis aber schneller!!

Wie man am letzten Beispiel sieht, kann explizites Casting zu Laufzeitverbesserungen beitragen, wenn vor der Operation eine Typumwandlung nach Integer stattfindet.