Durch Multiplikation mit einem Integer, die von einem Float/Double in Java

Ich versuche, etwas zu tun, so einfach: multiplizieren Sie eine ganze Zahl durch eine float/double:

private final static int a = 100;
...
double d = 0.5; //Although this is like dividing by 2, it could be any decimal.
int x = (int) (a * d);

Jedoch, obwohl Sie erwarten würden, diese zurück x = 50 statt x = 100! Das gleiche passiert, wenn ich float d = 0.5f. Weiß jemand, was Los ist und warum funktioniert das nicht?

  • Ich denke, java wirft der zweite term in der Bedienung * auf die erste. Versuchen int x = (int) (d * a); oder int x = (int) (a * (float) (d))
  • Sind Sie ernst? Ist dies nicht möglich. Hast du auch versuchen läuft? Es wird geben 50!!!
  • Ich änderte den code, um direkt auf den Punkt des Problems. Ich aktualisierte den code zu reflektieren, das problem genauer.
  • Nein. Die Reihenfolge ist dabei unerheblich. Es weitet sich das Ergebnis auf die größere der beiden Arten.
  • Ja, ich bin einverstanden.
  • Sorry Jungs, ist es kein problem. Moderator, kann Sie löschen?
  • Löschen Sie die Frage selbst.

InformationsquelleAutor alwaysboots | 2015-07-11
Schreibe einen Kommentar