BigDecimal과 함께 - 정확한 숫자 계산을 Java로 구현하기
BigDeciaml With Java 이번 Post는 Java에서 금액을 저장할 때 사용하는 방법을 기록한다. 원시형(primitive) 변수로 저장하는 방법과 Java가 지원하는 Class를 정리한다. double/float 한국은 소수점 밑으로 금액이 없다. 그래서 int타입 변수로 처리하는 로직을 생각할 것이다. 하지만, 환산과 세율로 인해 소수점 곱셈이 발생하면 int타입으로는 해결할 수 없다. 그러면, 소수점을 지원하는 double과 float을 생각한다. 그런데 double과 float의 사칙연산 결과는 우리가 생각하는 것과 다르다. @Test public void 원시형 _ 사칙연산 () { double a = 0.1 ; double b = 0.2 ; double c = 0.3 ; // double 끼리 사칙연산. System . out . println ( a + b - c ); // 예상 : 0 / 결과 : 5.551115123125783E-17 System . out . println ( a * b * c ); // 예상 : 0.006 / 결과 : 0.006000000000000001 float d = 0.1f ; float e = 0.2f ; float f = 0.3f ; // float 끼리 사칙연산 System . out . println ( d + e - f ); // 예상 : 0 / 결과 : 0.0 System . out . println ( d * e * f ); // 예상 : 0.006 / 결과 : 0.0060000005 // 섞어서 사칙연산 System . out . println ( a + e - f ); // 예상 : 0 / 결과 : -8.940696738513054E-9 Sy...