Compiler-Flag: Implizites Ganzzahlrunden
-
Hi,
gibt es ein Compiler-Flag, das dafür sorgt, dass Ganzzahlen (int) implizit gerundet werden?
int x = 2 / 3 ; System.out.println(x) ;
liefert 0, soll aber 1 liefern, da so die Tendez erhalten bleibt.
MfG
WilMen
-
Ganzzahlen können gar nicht gerundet werden, wie der Name schon sagt.
Verwende floats oder doubles für die Division und runde dann.
-
Bevor x mit initialisiert wird, handelt es sich bei dem Ausdruck
2 / 3
um eine Fließkommazahl.
Diese wird dann implizit zu einer Ganzzahl konvertiert, also wäre ein Runden theoretisch machbar. Gibt es nun so eine Option?MfG WilMen
-
bei int werden die kommastellen einfach abgeschnitten, ich glaub nicht dass es ein compilerflag gibt, da man sonst einfach double nutzen könnte...
du kannst aber einfach 0.5 hinzuaddieren dann wird es "richtig" auf- beziehungsweise abgerunden
int j = 2/3 + 0.5
-
WilMen schrieb:
Bevor x mit initialisiert wird, handelt es sich bei dem Ausdruck
2 / 3
um eine Fließkommazahl.
Nö, das ist von vornherein eine Ganzzahl, nämlich 0. Deshalb funktioniert der Tipp mit dem Addieren von 0.5 auch nicht.
-
dann versuchs halt mit
int x = 2d/3d + .5d;