问题
是否有可能做到这一点?
double variable;
variable = 5;
/* the below should return true, since 5 is an int.
if variable were to equal 5.7, then it would return false. */
if(variable == int) {
//do stuff
}
我知道代码可能不会那样,但是怎么样?
#1 热门回答(164 赞)
或者你可以使用模运算符:(d % 1) == 0
#2 热门回答(100 赞)
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) {
// integer type
}
这将检查double的向下舍入值是否与double相同。
你的变量可以有一个int或double值而且Math.floor(variable)
always有一个int值,所以如果你的变量等于Math.floor(variable)
那么它必须有一个int值。
如果变量的值是无穷大或负无穷大,这也不起作用,因此在条件中添加"只要变量不是无限的"。
#3 热门回答(68 赞)
番石榴:DoubleMath.isMathematicalInteger
。 (披露:我写过它。)或者,如果你还没有进口番石榴,x == Math.rint(x)
是最快的方法; rint
比floor
或ceil
快得多。