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?

Était-ce utile?

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 ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top