Ich habe die folgende Zeile verwendet, um float in int umzuwandeln, aber es ist nicht so genau, wie ich es gerne hätte:
float a=8.61f;
int b;
b=(int)a;
Das Ergebnis ist: 8
(Es sollte sein 9
)
Wann a = -7.65f
ist das Ergebnis: -7
(Es sollte sein -8
)
Was ist der beste Weg, um es zu tun?
java
floating-point
int
Frank
quelle
quelle
Antworten:
Mit
Math.round()
wird der Gleitkommawert auf die nächste Ganzzahl gerundet.quelle
Math.round()
Gibt einenint
Wert zurück, sodass Typecasting mit(int)
redundant ist.(int)foo
ist einfacher.Tatsächlich gibt es verschiedene Möglichkeiten, float auf int herunterzuspielen, je nachdem, welches Ergebnis Sie erzielen möchten: (für int
i
, floatf
)rund (die dem gegebenen Float am nächsten liegende Ganzzahl)
Hinweis: Dies ist vertraglich gleich
(int) Math.floor(f + 0.5f)
abschneiden (dh alles nach dem Dezimalpunkt fallen lassen)
Decke / Boden (eine ganze Zahl, die immer größer / kleiner als ein gegebener Wert ist, wenn sie einen Bruchteil hat)
Zum Runden positiver Werte können Sie auch einfach verwenden
(int)(f + 0.5)
, was genau wieMath.Round
in diesen Fällen funktioniert (gemäß Dokument).Sie können auch
Math.rint(f)
die Rundung auf die nächste gerade ganze Zahl durchführen . Dies ist wahrscheinlich nützlich, wenn Sie damit rechnen, mit vielen Floats mit einem Bruchteil von genau 0,5 zu arbeiten (beachten Sie die möglichen IEEE-Rundungsprobleme) und den Durchschnitt des Satzes beibehalten möchten. Sie werden eine andere Tendenz einführen, bei der gerade Zahlen häufiger als ungerade sind.Sehen
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
Weitere Informationen und einige Beispiele.
quelle
Math.round(value)
Runden Sie den Wert auf die nächste ganze Zahl.Verwenden
quelle
Math.round gibt auch einen ganzzahligen Wert zurück, sodass Sie keine Typumwandlung durchführen müssen.
quelle
Verwenden Sie
Math.round(value)
dann nach dem Typ Cast es in Integer.quelle
Für mich einfacher: (int) (a +.5) // a ist ein Float. Gerundeten Wert zurückgeben.
Nicht abhängig von Java Math.round () -Typen
quelle
-(int) ( PI / 3 )
: versuchen Sie Ihren Code mit einem Negativa
... seit wann-0.5
rundet auf0
?