是否有任何方法或快速方法可以检查Java中的数字是否为整数(属于Z字段)?
我想过可能会从四舍五入的数字中减去它,但我找不到任何可以帮助我的方法。
我应该在哪里检查?整数Api?
答案 0 :(得分:42)
又快又脏......
if (x == (int)x)
{
...
}
编辑:这是假设x已经是其他数字形式。如果您正在处理字符串,请查看Integer.parseInt
。
答案 1 :(得分:10)
更多一个例子:)
double a = 1.00
if(floor(a) == a) {
// a is an integer
} else {
//a is not an integer.
}
在这个例子中,ceil可以使用并具有完全相同的效果。
答案 2 :(得分:3)
如果您正在谈论浮点值,则由于格式的性质,您必须非常小心。
我知道这样做的最好方法是决定一些epsilon值,比如0.000001f,然后做这样的事情:
boolean nearZero(float f)
{
return ((-episilon < f) && (f <epsilon));
}
然后
if(nearZero(z-(int)z))
{
//do stuff
}
基本上你要检查z和z的整数大小是否在某个公差范围内具有相同的大小。这是必要的,因为浮动本质上是不精确的。
注意,但是:如果你的浮点数的大小超过Integer.MAX_VALUE
(2147483647),这可能会破坏,你应该意识到,必须不可能在高于该值的浮点数上检查整数。
答案 3 :(得分:1)
使用Z我假设你的意思是整数,即3,-5,77而不是3.14,4.02等。
正则表达式可能会有所帮助:
Pattern isInteger = Pattern.compile("\\d+");
答案 4 :(得分:0)
将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);
}
答案 5 :(得分:0)
if((number%1)!=0)
{
System.out.println("not a integer");
}
else
{
System.out.println("integer");
}
答案 6 :(得分:0)
int x = 3;
if(ceil(x) == x) {
System.out.println("x is an integer");
} else {
System.out.println("x is not an integer");
}
答案 7 :(得分:0)
http://module
答案 8 :(得分:0)
检查ceil函数和floor函数是否返回相同的值
static boolean isInteger(int n)
{
return (int)(Math.ceil(n)) == (int)(Math.floor(n));
}
答案 9 :(得分:0)
double x == 2.15;
if(Math.floor(x) == x){
System.out.println("an integer");
} else{
System.out.println("not an integer");
}
我认为您可以类似地使用Math.ceil()
方法来验证x
是否为整数。之所以有效,是因为Math.ceil
或Math.floor
将x
舍入到最接近的整数(例如y
),如果x==y
则我们原来的“ x”是整数。
答案 10 :(得分:0)
你可以只使用 x % 1 == 0
因为 x % 1 给出了 x / 1 的残值
答案 11 :(得分:-3)
//用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;
}