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?
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
.
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.
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.
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+");
if((number%1)!=0)
{
System.out.println("not a integer");
}
else
{
System.out.println("integer");
}
int x = 3;
if(ceil(x) == x) {
System.out.println("x is an integer");
} else {
System.out.println("x is not an integer");
}
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);
}
/**
* 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.
}
// 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;
}