전쟁 포탄.. 탱크 0.000000001

int 4 bytes…..

float 8 byte

101010110101010

floatdouble은 과학과 공학 계산용으로 설계되었다.

돈계산 해보기

// 1.03 달러 중 42센트를 썼다. 남은 돈은?
System.out.println(1.03 - 0.42); // 0.6100000000000001

// 1달러로 10센트짜리 사탕 9개를 구매하였다. 남은 돈은?
System.out.println(1.00 - 9 * 0.10); // 0.09999999999999998

결론! 금융 계산에는 BigDecimal, int 혹은 long을 사용해야 한다.

그러나, BigDecimal에는 단점이 두 가지 있다.

  1. 기본 타입보다 쓰기가 훨씬 불편하다.
  2. 느리다.