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

2022-08-31 06:23:05

可以做到这一点吗?

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

或者您可以使用模运算符:

(d % 1) == 0


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

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

变量可以具有整数或双精度值,并且始终具有整数值,因此,如果变量等于,则它必须具有整数值。Math.floor(variable)Math.floor(variable)

如果变量的值是无限的或负无限的,这也不起作用,因此将“只要变量不是无限的”添加到条件中。