2016-03-13 7 views

Antwort

9

r = r * e gibt Ihnen einen Fehler, da das Ergebnis der r * e ist ein double so wird es einen Verlust an Genauigkeit, wenn Sie es in einem int speichern.

r *= e gibt Ihnen keinen Fehler, weil es für r = (int)(r * e) syntaktischen Zucker ist (source).

0

Es ist, weil r und e verschiedene Arten sind. Bei Verwendung von zusammengesetzten Zuweisungsoperatoren wie *= werden die Typen narrowly hinter den Kulissen konvertiert (implizit). Der * Operator wird nicht implizit konvertiert, daher müssen Sie explizit konvertieren, indem Sie nach innen umwandeln:

r = (int) (r * e);