MATH-1118

Equality of double values in accordance with the semantics of "java.lang.Double".


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1587548 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gilles Sadowski 2014-04-15 12:22:31 +00:00
parent 5b118e04de
commit 70101ee3ca
2 changed files with 30 additions and 1 deletions

View File

@ -57,6 +57,18 @@ public final class MathUtils {
return new Double(value).hashCode();
}
/**
* Returns {@code true} if the values are equal according to semantics of
* {@link Double#equals(Object)}.
*
* @param x Value
* @param y Value
* @return {@code new Double(x).equals(new Double(y))}
*/
public static boolean equals(double x, double y) {
return new Double(x).equals(new Double(y));
}
/**
* Returns an integer hash code representing the given double array.
*

View File

@ -25,10 +25,27 @@ import org.junit.Test;
/**
* Test cases for the MathUtils class.
*
* @version $Id$
* 2007) $
*/
public final class MathUtilsTest {
@Test
public void testEqualsDouble() {
final double x = 1234.5678;
Assert.assertTrue(MathUtils.equals(x, x));
Assert.assertFalse(MathUtils.equals(x, -x));
// Special cases (cf. semantics of JDK's "Double").
// 1. NaN
Assert.assertTrue(MathUtils.equals(Double.NaN, Double.NaN));
// 2. Negative zero
final double mZero = -0d;
final double zero = 0d;
Assert.assertTrue(MathUtils.equals(zero, zero));
Assert.assertTrue(MathUtils.equals(mZero, mZero));
Assert.assertFalse(MathUtils.equals(mZero, zero));
}
@Test
public void testHash() {
double[] testArray = {