Ich habe die folgende Zeile verwendet, um Float in Int zu konvertieren, aber es ist nicht so genau, wie ich möchte:
float a=8.61f;
int b;
b=(int)a;
Das Ergebnis ist: 8
(es sollte 9
sein)
Bei a = -7.65f
lautet das Ergebnis: -7
(es sollte -8
sein)
Wie mache ich das am besten?
Mit Math.round()
wird der Float auf die nächste Ganzzahl gerundet.
Tatsächlich gibt es verschiedene Möglichkeiten, Float auf int herunterzuschalten, abhängig vom gewünschten Ergebnis: (Für int i
, float f
)
round (die nächste Ganzzahl, die dem angegebenen Float am nächsten kommt)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
anmerkung: Dies ist vertraglich gleich (int) Math.floor(f + 0.5f)
abschneiden (d. h. alles nach dem Dezimalpunkt löschen)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
ceiling/floor (eine Ganzzahl, die immer größer/kleiner als ein bestimmter Wert ist wenn einen Bruchteil hat)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
Zum Runden von positiven Werten können Sie auch einfach (int)(f + 0.5)
verwenden, der in diesen Fällen genau wie Math.Round
funktioniert (wie in doc).
Theoretisch könnten Sie Math.rint(f)
verwenden, um die Rundung auszuführen, aber rint
rundet nicht 0,5 auf, es rundet oder rundet den Wert, je nachdem, welche der unteren oder höheren Ganzzahlen gerade ist.
Sehen
http://mindprod.com/jgloss/round.html
http://docs.Oracle.com/javase/6/docs/api/Java/lang/Math.html
weitere Informationen und einige Beispiele.
Math.round(value)
rundet den Wert auf die nächste ganze Zahl.
Benutzen
1) b=(int)(Math.round(a));
2) a=Math.round(a);
b=(int)a;
Verwenden Sie Math.round(value)
und wandeln Sie ihn nach dem Typ in Ganzzahl um.
float a = 8.61f;
int b = (int)Math.round(a);
Math.round gibt auch einen ganzzahligen Wert zurück, sodass Sie keine Typumwandlung durchführen müssen.
int b = Math.round(float a);
Für mich einfacher: (int) (a +.5) // a ist ein Float. Rundungswert zurückgeben.
Nicht abhängig von Java Math.round () - Typen