Java BigDecimal equality
Here is why you should use compareTo to find out whether two BigDecimals represent the same number or not.
import java.math.BigDecimal;
import junit.framework.TestCase;
public final class TestBigDecimal extends TestCase {
public void testBigDecimalZeroEqualsBigDecimalValueOfZero() {
assertTrue(BigDecimal.ZERO.equals(BigDecimal.valueOf(0)));
}
public void testBigDecimalZeroNotEqualsBigDecimalValueOfZeroDot() {
assertFalse(BigDecimal.ZERO.equals(BigDecimal.valueOf(0.)));
}
public void testBigDecimalZeroEqualsBigDecimalValueOfZeroString() {
assertTrue(BigDecimal.ZERO.equals(new BigDecimal("0")));
}
public void testBigDecimalZeroEqualsBigDecimalValueOfZeroDotString() {
assertTrue(BigDecimal.ZERO.equals(new BigDecimal("0.")));
}
public void testBigDecimalZeroNotEqualsBigDecimalValueOfZeroDotZeroString() {
assertFalse(BigDecimal.ZERO.equals(new BigDecimal("0.0")));
}
public void testBigDecimalZeroComparesToBigDecimalValueOfZeroDotAsZero() {
assertEquals(0, BigDecimal.ZERO.compareTo(BigDecimal.valueOf(0.)));
}
public void testBigDecimalZeroComparesToBigDecimalValueOfZeroDotZeroStringAsZero() {
assertEquals(0, BigDecimal.ZERO.compareTo(new BigDecimal("0.0")));
}
}
