Konvertierung von double in integer in java
In Java möchte ich einen Double in einen Integer umwandeln, ich weiß, wenn Sie das tun:
double x = 1.5;
int y = (int)x;
erhält man y=1. Wenn Sie dies tun:
int y = (int)Math.round(x);
erhalten Sie wahrscheinlich 2. Ich frage mich jedoch: Da Double-Darstellungen von Ganzzahlen manchmal wie 1,9999999998 oder so aussehen, besteht die Möglichkeit, dass das Casting eines mit Math.round() erstellten Doubles immer noch zu einer abgeschnittenen Zahl führt und nicht zu der gerundeten Zahl, nach der wir suchen (d. h.: 1 statt 2 im dargestellten Code)?
(und ja, ich meine es auch so: Gibt es irgendeinen 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 einen gerundeten int zu machen, ohne das Risiko des Abschneidens einzugehen?
Ich habe etwas herausgefunden: Math.round(x) gibt einen long zurück, nicht einen double. Daher ist es unmöglich, dass Math.round() eine Zahl zurückgibt, die wie 3,9999998 aussieht. Daher muss int(Math.round()) nie etwas abschneiden und wird immer funktionieren.
Nein,
round()
rundet Ihren Double immer auf den korrekten Wert, und dann wird er in einenlong
umgewandelt, der alle Nachkommastellen abschneidet. Aber nach der Rundung bleiben keine Nachkommastellen übrig.Hier sind die Unterlagen von
Math.round(double)
:Für den Datentyp
Double
zuint
können Sie folgendes verwenden:Ich habe meine Aufgabe gelöst.