# 예금 복리 계산 저는 처음에 double s = (a*Math.pow(1+r, n); 로 하고 출력할 때 System.out.printf("만기 금액: %.0f 원", s); 이렇게 했더니 '11592741 원' 으로 반올림되서 출력되더라구요! 저는 점을 사용하는게 소수점이하를 버리는 건 줄 알았는데 구글찾아보니까 반올림이라고 나와있었어요. 근데 지금까지는 소수점 버리려고 저런식으로 막 사용해도 문제가 없었던 것 같은데 우연이었던 걸까여..? #### CODE <a class='btn btn-default' href='/codes/63377'>Link</a> ``` public class Money { public static void main(String[] args) { int a = 10000000; int n = 5; double r = 0.03; int s = (int)(a*Math.pow(1+r, n)); System.out.printf("만기 금액: %d 원", s); } } ``` #### INPUT ``` ``` #### OUPUT ``` 만기 금액: 11592740 원 ```
# 찾아본대로 printf는 소수점 이하 자리수를 반올림하여 출력하는데요 정확히 버려야 할 경우에는 Math.floor()를 사용하면 좋습니다🙆‍♂️ 👉 https://www.musttry.co.kr/tip/2020/06/13/tip-java-06/ 👉 https://stackoverflow.com/questions/7747469/how-can-i-truncate-a-double-to-only-two-decimal-places-in-java ## 추가 구글링 키워드 - 자바 소수점 이하 버림 - java api floor - java decimal format