라벨이 Finance인 게시물 표시

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...

Finance와 함께 - Java로 구현하는 현재가치

이미지
Present Value with Java  이번 Post는 현재가치를 Java로 구현한다. 재무업무 상 필요한 개념이며 우리가 살아가는데 요긴하게 쓰일 수 있으니 꼭 알아가길 바란다. PV(Present Value)  미래에 얻게 될 확실한 부의 가치를 현재의 가치로 환산한 값이다. 줄여서 현가( 現價 )라고 한다.  2000년의 1,000원이 2021년의 1,000원과 동일한 가치를 가지지 않는다. 예를 들어보자.  연 금리가 2%라고 생각하면자. 국민연금 납입기간이 끝나 1억원의 연금을 받으려고 한다. 이 때, 2가지 선택지가 있다.  지금 당장 1억원을 받는다. 2년 후에 이자 붙여서 1억 4백만원을 받는다.  어떤 선택이 더 이득일까? 1번을 선택 후 은행에 저금해보자. 2년 후 2번과 비교했을 때, 1번이 4만원이 더 이득이다. 이처럼 현재의 기준으로 미래를 예측한 가치를 현재가치라고 한다. 기준은 금리, 이자율,...이 있다. 2년 후의 금리로 계산한 최종금액 구현  현재가치를 구하는 공식은 이  Link 를 참조하자. @Test public void calculatePV_just_function () { double interestRate = 0.02d ; double amount = 100000000 ; double year = 2 ; double pv = amount * Math . pow (( 1 + interestRate ), year ); String formattedPV = NumberFormat . getNumberInstance (). format ( pv ); Sy...