Comment convertir Float en int avec Java
-
18-09-2019 - |
Question
J'ai utilisé la ligne suivante pour convertir Float en int, mais ce n'est pas aussi précis que je le souhaite:
float a=8.61f;
int b;
b=(int)a;
Le résultat est : 8
(Ça devrait être 9
)
Lorsque a = -7.65f
, le résultat est : -7
(Ça devrait être -8
)
Quelle est la meilleure façon de le faire?
La solution
Utilisant Math.round()
tournera le flotteur sur l'entier le plus proche.
Autres conseils
En fait, il existe différentes façons de réduire le flotteur à INT, selon le résultat que vous souhaitez réaliser: (pour Int i
, flotteur f
)
Round (l'entier le plus proche à Float donné)
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
Remarque: c'est, par contrat, égal à
(int) Math.floor(f + 0.5f)
tronci (c.-à-d. Déposez tout après le point décimal)
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
Ceil / sol (un entier toujours plus grand / plus petit qu'une valeur donnée si il a une partie fractionnaire)
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
Pour arrondir positif valeurs, vous pouvez également utiliser (int)(f + 0.5)
, qui fonctionne exactement comme Math.Round
Dans ces cas (selon le DOC).
En théorie, vous pouvez utiliser Math.rint(f)
faire l'arrondi, mais rint
N'arrête pas 0,5, il l'arrête vers le haut ou vers le bas, quel que soit l'entier inférieur ou supérieur, il est donc inutile dans la plupart des cas.
Voir
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/math.html
Pour plus d'informations et quelques exemples.
Math.round(value)
Arrondissez la valeur au nombre entier le plus proche.
Utilisation
1) b=(int)(Math.round(a));
2) a=Math.round(a);
b=(int)a;
Utilisation Math.round(value)
Ensuite, après le type, jetez-le sur entier.
float a = 8.61f;
int b = (int)Math.round(a);
Math.round renvoie également une valeur entière, vous n'avez donc pas besoin de typasser.
int b = Math.round(float a);
Quant à moi, plus facile: (int) (A +.5) // a est un flotteur. Renvoie la valeur arrondie.
Ne dépend pas des types java math.round ()