In Java möchte ich ein Double in eine Ganzzahl konvertieren. Ich weiß, wenn Sie dies tun:
double x = 1.5;
int y = (int)x;
Sie erhalten y = 1. Wenn du das tust:
int y = (int)Math.round(x);
Sie werden wahrscheinlich 2 erhalten. Ich frage mich jedoch: Da doppelte Darstellungen von ganzen Zahlen manchmal wie 1,9999999998 oder so aussehen, besteht die Möglichkeit, dass das Wirken eines über Math.round () erstellten Doppelten immer noch zu einer abgeschnittenen Zahl führt als die gerundete Zahl, nach der wir suchen (dh: 1 statt 2 im Code wie dargestellt)?
(und ja, ich meine es als solches: Gibt es einen Wert für x, bei dem y ein Ergebnis anzeigt, das eher eine abgeschnittene als eine gerundete Darstellung von x ist?)
Wenn ja: Gibt es eine bessere Möglichkeit, aus einem Double ein gerundetes Int zu machen, ohne das Risiko einer Kürzung einzugehen?
Etwas herausgefunden: Math.round (x) gibt ein langes, kein doppeltes zurück. Daher: Für Math.round () ist es unmöglich, eine Zahl zurückzugeben, die wie 3.9999998 aussieht. Daher muss int (Math.round ()) niemals etwas abschneiden und funktioniert immer.