Javaで数値が整数(Zフィールドに属する)であるかどうかを確認する方法または簡単な方法はありますか?
丸められた数値からそれを減算することを考えましたが、これに役立つ方法は見つかりませんでした。
どこで確認すればいいですか?整数Api?
早くて汚い...
if (x == (int)x)
{
...
}
編集:これは、xがすでに他の数値形式になっていることを前提としています。文字列を扱っている場合は、Integer.parseInt
。
もう1つの例:)
double a = 1.00
if(floor(a) == a) {
// a is an integer
} else {
//a is not an integer.
}
この例では、ceilを使用でき、まったく同じ効果があります。
浮動小数点値について話している場合、形式の性質上、非常に注意する必要があります。
私がこれを行うのを知っている最善の方法は、イプシロン値、たとえば0.000001fを決定し、次のようなことをすることです:
boolean nearZero(float f)
{
return ((-episilon < f) && (f <epsilon));
}
それから
if(nearZero(z-(int)z))
{
//do stuff
}
基本的に、zとzの整数のケースが許容範囲内で同じ大きさであるかどうかを確認しています。浮動は本質的に不正確であるため、これが必要です。
ただし、フロートの大きさがInteger.MAX_VALUE
(2147483647)よりも大きい場合、これはおそらく壊れます。その値を超えるフロートの積分をチェックすることは必然的に不可能であることに注意する必要があります。
Zでは、整数、つまり3.14、4.02などではなく3-5、77を意味すると仮定します.
正規表現が役立つ場合があります:
Pattern isInteger = Pattern.compile("\\d+");
Ceil関数とfloor関数が同じ値を返すかどうかを確認してください
static boolean isInteger(int n)
{
return (int)(Math.ceil(n)) == (int)(Math.floor(n));
}
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);
}
int x = 3;
if(ceil(x) == x) {
System.out.println("x is an integer");
} else {
System.out.println("x is not an integer");
}
if((number%1)!=0)
{
System.out.println("not a integer");
}
else
{
System.out.println("integer");
}
/**
* 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.
}