Проверка, является ли число целым числом в Java - PullRequest
22 голосов
/ 31 марта 2011

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

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

Где мне проверить? Integer Api?

Ответы [ 10 ]

42 голосов
/ 31 марта 2011

Быстро и грязно ...

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

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

10 голосов
/ 31 марта 2011

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

double a = 1.00

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

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

3 голосов
/ 31 марта 2011

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

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

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

затем

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

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

ПРИМЕЧАНИЕ, ОДНАКО: это, вероятно, сломается, если ваши поплавки имеют величину больше Integer.MAX_VALUE (2147483647), и вы должны знать, что по необходимости проверить это невозможнодля целочисленности с плавающей точкой выше этого значения.

1 голос
/ 31 марта 2011

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

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

Pattern isInteger = Pattern.compile("\\d+");
0 голосов
/ 10 февраля 2019

Убедитесь, что функция ceil и floor возвращают одинаковое значение

static boolean isInteger(int n) 
{ 
return (int)(Math.ceil(n)) == (int)(Math.floor(n)); 
} 
0 голосов
/ 05 июля 2018
/**
 * 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 голосов
/ 08 февраля 2017

// на языке C .. но алгоритм такой же

#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;
}
0 голосов
/ 08 мая 2016
 int x = 3;

 if(ceil(x) == x) {

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

 } else {

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

 }
0 голосов
/ 29 октября 2014
    if((number%1)!=0)
    {
        System.out.println("not a integer");
    }
    else
    {
        System.out.println("integer");
    }
0 голосов
/ 08 декабря 2013

изменить 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);


   }
...