Проверка если число-целое число в Java

есть ли какой-либо метод или быстрый способ проверить, является ли число целым числом (принадлежит полю Z) в Java?

Я думал, может быть, вычесть его из округленного числа, но я не нашел никакого метода, который поможет мне в этом.

где я должен проверить? Целое Число API-Интерфейс?

9 ответов


быстрый и грязный...

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

edit: это предполагает, что x уже находится в какой-то другой числовой форме. Если вы имеете дело со строками, посмотрите в Integer.parseInt.


еще один пример :)

double a = 1.00

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

в этом примере ceil можно использовать и иметь точно такой же эффект.


Если вы говорите о значениях с плавающей запятой, вы должны быть очень осторожны из-за характера формата.

лучший способ, который я знаю об этом, - это принять решение о некотором значении Эпсилона, скажем, 0.000001 f, а затем сделать что-то вроде этого:

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

затем

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

по существу, вы проверяете, имеют ли z и целочисленный случай z одинаковую величину в пределах некоторого допуска. Это необходимо, потому что floating по своей сути неточный.

Примечание, однако: это, вероятно, сломается, если ваши поплавки имеют величину больше, чем Integer.MAX_VALUE (2147483647), и вы должны знать, что по необходимости невозможно проверить интегральность на поплавках выше этого значения.


С Z я предполагаю, что вы имеете в виду целые числа , я.Е 3,-5,77 не 3.14, 4.02 и т. д.

регулярное выражение может помочь:

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");

 }

изменение X на 1, а выход является целым числом, то его не целочисленный счетчик пример целых чисел, десятичных чисел и т. д.

   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.
}

// в языке Си.. но Альго-это то же самое

#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;
}