web-dev-qa-db-fra.com

Vérifier si un nombre est un entier en Java

Existe-t-il une méthode ou un moyen rapide de vérifier si un nombre est un entier (appartient au champ Z) en Java?

J'ai pensé à peut-être le soustraire du nombre arrondi, mais je n'ai trouvé aucune méthode qui puisse m'aider à résoudre ce problème.

Où devrais-je vérifier? Api Integer?

20
Unknown user

Rapide et sale...

if (x == (int)x)
{
   ...
}

edit: Cela suppose que x est déjà sous une autre forme numérique. Si vous avez affaire à des chaînes, examinez Integer.parseInt.

41
Bleaourgh

Un exemple de plus :)

double a = 1.00

if(floor(a) == a) {
   // a is an integer
} else {
   //a is not an integer.
}

Dans cet exemple, ceil peut être utilisé et avoir exactement le même effet.

10
evilone

si vous parlez de valeurs à virgule flottante, vous devez faire très attention en raison de la nature du format. 

la meilleure façon de le faire consiste à choisir une valeur epsilon, par exemple, 0.000001f, puis à faire quelque chose comme ceci:

boolean nearZero(float f)
{
    return ((-episilon < f) && (f <epsilon)); 
}

puis

if(nearZero(z-(int)z))
{ 
    //do stuff
}

essentiellement, vous vérifiez si z et le cas entier de z ont la même amplitude avec une certaine tolérance. Cela est nécessaire car les flottants sont intrinsèquement imprécis.

NOTE, CEPENDANT: cela va probablement casser si la magnitude de vos flottants est supérieure à Integer.MAX_VALUE (2147483647), et vous devez savoir qu’il est nécessairement impossible de vérifier l’intégrité des flottants supérieurs à cette valeur.

    if((number%1)!=0)
    {
        System.out.println("not a integer");
    }
    else
    {
        System.out.println("integer");
    }
1
Learner

Avec Z, je suppose que vous voulez dire entiers, c’est-à-dire 3, -5,77 et non 3,14, 4,02 etc.

Une expression régulière peut aider:

Pattern isInteger = Pattern.compile("\\d+");
1
sthysel

Vérifier si la fonction ceil et la fonction floor donnent la même valeur

static boolean isInteger(int n) 
{ 
return (int)(Math.ceil(n)) == (int)(Math.floor(n)); 
} 
0
Shubham Chopra

change x en 1 et la sortie est un entier, sinon ce n'est pas un entier. Add to count 

   double x = 1.1;
   int count = 0;
   if (x == (int)x)
    {
       System.out.println("X is an integer: " + x);
       count++; 
       System.out.println("This has been added to the count " + count);
    }else
   {
       System.out.println("X is not an integer: " + x);
       System.out.println("This has not been added to the count " + count);


   }
0
user3080471
 int x = 3;

 if(ceil(x) == x) {

  System.out.println("x is an integer");

 } else {

  System.out.println("x is not an integer");

 }
0
Jyant Mahara
/**
 * Check if the passed argument is an integer value.
 *
 * @param number double
 * @return true if the passed argument is an integer value.
 */
boolean isInteger(double number) {
    return number % 1 == 0;// if the modulus(remainder of the division) of the argument(number) with 1 is 0 then return true otherwise false.
}
0
Dhananjay M