'java.math.BigDecimal'에 해당되는 글 2

  1. 2010.12.10 BigDecimal - 100 과 100.00
  2. 2009.02.22 java.math.BigDecimal

BigDecimal - 100 과 100.00

합이 100인지 비교하는 코드가 있다.
합이 100.00인데 예외가 발생한다.
if(!sum.equals(new BigDecimal(100))){
	throw new CommandException("합은 100이 되어야 합니다 : " + sum); //100.00
}
테스트케이스를 작성해 본다.
@Test
public void testBigDecimalWithNumber(){
	BigDecimal ten = new BigDecimal(100);
	BigDecimal tenDouble = new BigDecimal(100.00);
	
	assertTrue(ten.equals(tenDouble));
	
	assertEquals(0, ten.compareTo(tenDouble)); 
	assertEquals(0, ten.scale()); 
	assertEquals(0, tenDouble.scale()); 
}

@Test
public void testBigDecimalWithString(){
	BigDecimal ten = new BigDecimal("100");
	BigDecimal tenDouble = new BigDecimal("100.00");
	
	assertFalse(ten.equals(tenDouble));

	assertEquals(0, ten.compareTo(tenDouble)); 
	assertEquals(0, ten.scale()); 
	assertEquals(2, tenDouble.scale()); 
}

BigDecimal#equals() 는 scale을 비교한다.

데이터베이스에서 데이터를 가져와서 비교할때 primitive type으로 비교하는게 좋을거 같다.

java.math.BigDecimal

BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("20");
num1.add(num2);
System.out.println(num1); //결과는?

2009-11-09 추가
String s = null; //java.lang.NullPointerException
String s = ""; //java.lang.NumberFormatException
BigDecimal d = new BigDecimal(s);

- 소수점 없애기
BigDecimal d = new BigDecimal("5.00");
d.intValue(); //5