393 votes

Comment convertir un float en int avec Java

J'ai utilisé la ligne suivante pour convertir un float en int, mais ce n'est pas aussi précis que je le voudrais :

 float a=8.61f;
 int b;

 b=(int)a;

Le résultat est : 8 (Il devrait être 9 )

Quand a = -7.65f le résultat est : -7 (Il devrait être -8 )

Quelle est la meilleure façon de procéder ?

17 votes

Je dois souligner que le simple typage tronque la valeur et n'effectue aucune opération d'arrondi/de nivellement sur la valeur.

5voto

Haris Abdullah Points 21

Math.round() est suffisant

int b = Math.round(a)

Cela fera l'affaire

5voto

ike5 Points 74

Instanciation d'un Float en passant un float au constructeur, puis utilisez l'élément Float que vous avez créé pour retourner un int primitif.

Explication

Puisque les classes wrapper de numéros étendent le java.lang.Number vous pouvez avoir n'importe quelle objet d'emballage du numéro retourner tout autre nombre primitif en utilisant l'option .<type>Value() méthode.

Étapes

  1. Créer un objet Float
  2. Utilisez le .intValue() pour retourner une méthode primitive int .

Exemple

Float mFloat = Float.valueOf(8.65f);
int i = mFloat.intValue();

1voto

Si vous voulez convertir une valeur flottante en une valeur entière, vous avez plusieurs façons de le faire qui dépendent de la façon dont vous voulez arrondir la valeur flottante.

La première méthode consiste à arrondir la valeur flottante :

float myFloat = 3.14f;
int myInteger = (int)myFloat;

Le résultat de ce code sera 3, même si la valeur de myFloat est plus proche de 4.

La deuxième méthode consiste à arrondir la valeur flottante au plafond :

float myFloat = 3.14f;
int myInteger = Math.ceil(myFloat);

La sortie de ce code sera 4, car le mode d'arrondi cherche toujours la valeur la plus élevée.

0voto

Gumbo Points 386

Au lieu de Math.round(a) utilisez simplement b = (int) a + 0.5;

-1voto

Bruno L. Points 96

Quant à moi, c'est plus facile : (int) (a +.5) // a est un Flottant. Retourne une valeur arrondie.

Ne dépend pas des types Java Math.round()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X