[chk-double-is-int] check if doulbe is integer (#15312)
This commit is contained in:
parent
1bae3d7580
commit
7f1bfe6a87
37
core-java-modules/core-java-numbers-7/pom.xml
Normal file
37
core-java-modules/core-java-numbers-7/pom.xml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>core-java-numbers-7</artifactId>
|
||||||
|
<name>core-java-numbers-7</name>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung.core-java-modules</groupId>
|
||||||
|
<artifactId>core-java-modules</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.junit.jupiter</groupId>
|
||||||
|
<artifactId>junit-jupiter-engine</artifactId>
|
||||||
|
<version>${junit-jupiter.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>${guava.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<finalName>core-java-numbers-7</finalName>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</build>
|
||||||
|
</project>
|
@ -0,0 +1,83 @@
|
|||||||
|
package com.baeldung.doubleisint;
|
||||||
|
|
||||||
|
import com.google.common.math.DoubleMath;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
public class CheckDoubleIsAnIntegerUnitTest {
|
||||||
|
|
||||||
|
boolean notNaNOrInfinity(double d) {
|
||||||
|
return !(Double.isNaN(d) || Double.isInfinite(d));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenConvertingToInt_thenGetExpectedResult() {
|
||||||
|
double d1 = 42.0D;
|
||||||
|
boolean d1IsInteger = notNaNOrInfinity(d1) && (int) d1 == d1;
|
||||||
|
assertTrue(d1IsInteger);
|
||||||
|
|
||||||
|
double d2 = 42.42D;
|
||||||
|
boolean d2IsInteger = notNaNOrInfinity(d2) && (int) d2 == d2;
|
||||||
|
assertFalse(d2IsInteger);
|
||||||
|
|
||||||
|
double d3 = 2.0D * Integer.MAX_VALUE;
|
||||||
|
boolean d3IsInteger = notNaNOrInfinity(d3) && (int) d3 == d3;
|
||||||
|
assertTrue(!d3IsInteger); // <-- fails if exceeding Integer's range
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenUsingModuloOperator_thenGetExpectedResult() {
|
||||||
|
double d1 = 42.0D;
|
||||||
|
boolean d1IsInteger = notNaNOrInfinity(d1) && (d1 % 1) == 0;
|
||||||
|
assertTrue(d1IsInteger);
|
||||||
|
|
||||||
|
double d2 = 42.42D;
|
||||||
|
boolean d2IsInteger = notNaNOrInfinity(d2) && (d2 % 1) == 0;
|
||||||
|
assertFalse(d2IsInteger);
|
||||||
|
|
||||||
|
double d3 = 2.0D * Integer.MAX_VALUE;
|
||||||
|
boolean d3IsInteger = notNaNOrInfinity(d3) && (d3 % 1) == 0;
|
||||||
|
assertTrue(d3IsInteger);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenCheckingFloorOrCeilingValue_thenGetExpectedResult() {
|
||||||
|
double d1 = 42.0D;
|
||||||
|
boolean d1IsInteger = notNaNOrInfinity(d1) && Math.floor(d1) == d1;
|
||||||
|
assertTrue(d1IsInteger);
|
||||||
|
|
||||||
|
double d2 = 42.42D;
|
||||||
|
boolean d2IsInteger = notNaNOrInfinity(d2) && Math.floor(d2) == d2;
|
||||||
|
assertFalse(d2IsInteger);
|
||||||
|
|
||||||
|
double d3 = 2.0D * Integer.MAX_VALUE;
|
||||||
|
boolean d3IsInteger = notNaNOrInfinity(d3) && Math.floor(d3) == d3;
|
||||||
|
assertTrue(d3IsInteger);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenUsingGuava_thenGetExpectedResult() {
|
||||||
|
double d1 = 42.0D;
|
||||||
|
boolean d1IsInteger = DoubleMath.isMathematicalInteger(d1);
|
||||||
|
assertTrue(d1IsInteger);
|
||||||
|
|
||||||
|
double d2 = 42.42D;
|
||||||
|
boolean d2IsInteger = DoubleMath.isMathematicalInteger(d2);
|
||||||
|
assertFalse(d2IsInteger);
|
||||||
|
|
||||||
|
double d3 = 2.0D * Integer.MAX_VALUE;
|
||||||
|
boolean d3IsInteger = DoubleMath.isMathematicalInteger(d3);
|
||||||
|
assertTrue(d3IsInteger);
|
||||||
|
|
||||||
|
boolean isInfinityInt = DoubleMath.isMathematicalInteger(Double.POSITIVE_INFINITY);
|
||||||
|
assertFalse(isInfinityInt);
|
||||||
|
|
||||||
|
boolean isNanInt = DoubleMath.isMathematicalInteger(Double.NaN);
|
||||||
|
assertFalse(isNanInt);
|
||||||
|
}
|
||||||
|
}
|
@ -166,6 +166,7 @@
|
|||||||
<module>core-java-numbers-4</module>
|
<module>core-java-numbers-4</module>
|
||||||
<module>core-java-numbers-5</module>
|
<module>core-java-numbers-5</module>
|
||||||
<module>core-java-numbers-6</module>
|
<module>core-java-numbers-6</module>
|
||||||
|
<module>core-java-numbers-7</module>
|
||||||
<module>core-java-optional</module>
|
<module>core-java-optional</module>
|
||||||
<module>core-java-perf</module>
|
<module>core-java-perf</module>
|
||||||
<module>core-java-properties</module>
|
<module>core-java-properties</module>
|
||||||
@ -225,5 +226,4 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user