24. Testing if a double number is an integer
First of all, let’s consider the following expected results (false means that the double is not an integer):
double v1 = 23.11; // false double v2 = 23; // true double v3 = 23.0; // true double v4 = Double.NaN; // false double v5 = Double.NEGATIVE_INFINITY; // false double v6 = Double.POSITIVE_INFINITY; // false Most probably, the first solution for testing if a double number is an integer consists of a simple cast as follows:
public static boolean isDoubleIntegerV1(double v) { return v == (int) v; } However, there are several other options. For instance, we can rely on modulus, as follows:
public static boolean isDoubleIntegerV2(double v) { return v % 1 == 0; } Alternatively, we can rely on the Math.floor() and Double.isFinite() methods. If the given double is a finite number and is equal to the result of Math.floor(), then...