Проверка если число-целое число в 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+");
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;
}