Vérifier si un nombre est un entier en Java

y a-t-il une méthode ou un moyen rapide pour 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 pas trouvé de méthode qui pourrait m'aider avec cela.

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

19
demandé sur ROMANIA_engineer 2011-03-31 19:43:58

9 réponses

Rapide et sale...

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

edit: ceci suppose que x est déjà sous une autre forme numérique. Si vous faites affaire avec des cordes, regarder dans Integer.parseInt.

38
répondu Bleaourgh 2011-03-31 15:47:37

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 le même effet.

9
répondu evilone 2011-03-31 16:01:51

si tu parles de valeurs à virgule flottante, vous devez être très prudent en raison de la nature du format.

la meilleure façon que je connaisse de faire ceci est de décider sur une certaine valeur epsilon, disons, 0.000001 f, et ensuite faire quelque chose comme ceci:

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

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

essentiellement vous vérifiez pour voir si z et le cas entier de z ont la même magnitude à l'intérieur d'une certaine tolérance. Cela est nécessaire parce que flottant sont intrinsèquement imprécis.

notez cependant: cela se cassera probablement si vos flotteurs ont une magnitude supérieure à Integer.MAX_VALUE (2147483647), et vous devez savoir qu'il est par nécessité impossible de vérifier l'intégrale sur les flotteurs au-dessus de cette valeur.

3
répondu Alexander Questioning Bresee 2011-03-31 15:56:43

avec Z je suppose que vous voulez dire des entiers, I. e 3, -5,77 pas 3.14, 4.02 etc.

Une expression régulière peut aider:

Pattern isInteger = Pattern.compile("\d+");
0
répondu sthysel 2011-03-31 16:07:08
    if((number%1)!=0)
    {
        System.out.println("not a integer");
    }
    else
    {
        System.out.println("integer");
    }
0
répondu Learner 2014-10-29 10:31:23
 int x = 3;

 if(ceil(x) == x) {

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

 } else {

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

 }
0
répondu Jyant Mahara 2016-05-08 11:11:27

change x en 1 et la sortie est entière, sinon ce n'est pas un entier ajoute à compter exemple nombres entiers, nombres décimaux etc.

   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
répondu user3080471 2017-12-19 13:23:50
/**
 * 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
répondu Dhananjay M 2018-07-05 11:58:04

// en langage C.. mais l'algo est même

#include <stdio.h>

int main(){
  float x = 77.6;

  if(x-(int) x>0)
    printf("True! it is float.");
  else
    printf("False! not float.");        

  return 0;
}
-3
répondu Klevie Jun 2017-02-08 12:28:10