wake-up-neo.com

So konvertieren Sie Float in Int mit Java

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?

295
Frank

Mit Math.round() wird der Float auf die nächste Ganzzahl gerundet.

618
tw39124

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.

173
vaxquis

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);
5

Math.round gibt auch einen ganzzahligen Wert zurück, sodass Sie keine Typumwandlung durchführen müssen.

int b = Math.round(float a);
4
venkat

Für mich einfacher: (int) (a +.5) // a ist ein Float. Rundungswert zurückgeben.

Nicht abhängig von Java Math.round () - Typen

0
Bruno L.