是否有可能做到这一点?
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 }
我知道代码可能不会去这样的事情,但怎么也去了?
if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) { // integer type }
这将检查双精度值的四舍五入值是否与双精度值相同。
你的变量可能具有int或double值,并且Math.floor(variable)始终具有int值,因此,如果你的变量等于,Math.floor(variable)则它必须具有int值。
int
double
Math.floor(variable)
如果变量的值是无穷大或负无穷大,那么这也不起作用,因此向条件添加“只要变量不是无穷大”。
或者,你可以使用模运算符:
(d % 1) == 0