一尘不染

Java如何测试双精度数是否为整数

java

是否有可能做到这一点?

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
}

我知道代码可能不会去这样的事情,但怎么也去了?


阅读 550

收藏
2020-03-11

共2个答案

一尘不染

if ((variable == Math.floor(variable)) && !Double.isInfinite(variable)) {
    // integer type
}

这将检查双精度值的四舍五入值是否与双精度值相同。

你的变量可能具有intdouble值,并且Math.floor(variable)始终具有int值,因此,如果你的变量等于,Math.floor(variable)则它必须具有int值。

如果变量的值是无穷大或负无穷大,那么这也不起作用,因此向条件添加“只要变量不是无穷大”。

2020-03-11
一尘不染

或者,你可以使用模运算符:

(d % 1) == 0
2020-03-11