-
[네이버클라우드 캠프/2주차] 반올림 하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 11. 17:56728x90
❓문제 : 16.459를 소수점 둘째 자리까지 반올림해서 출력하세요.
자바를 사용하며 수학 계산과 관련된 문제를 풀기 위해 Math 클래스를 종종 사용하게 됩니다.
그중 round(반올림) 메서드와 random(난수 발생) 메서드를 주로 사용하게 되는데요.
random 메서드는 이젠 어느 정도 익숙해져 풀이하기 편하지만, round 메서드는 익숙해지지 않습니다..
이번 블로그 글을 통해 round 메서드에 대한 개념과 함께 사용 방법을 익힐 수 있도록 하겠습니다. (함께 해봅시다!)
1. round 메서드
round 메서드는 double 타입의 입력 값을 받아, 해당 값을 반올림한 long 타입의 결과를 반환합니다.
public static long round(double a)
아래의 예시를 통해 반올림되어 정수로 변하는 것을 확인해 보도록 하겠습니다.
double d1 = 4.4; double d2 = 4.5; double d3 = 4.6; long round1 = Math.round(d1); long round2 = Math.round(d2); long round3 = Math.round(d3); System.out.println(round1); // 4 System.out.println(round2); // 5 System.out.println(round3); // 5
위와 같이 간단히 소수점 한 자리를 반올림 하는 데에도 사용하지만
곱하기(*)를 통해 더 많은 소수점 자리에서 반올림하여 출력하는 예시도 많이 확인할 수 있습니다.
round 메서드를 사용하여 소수점 이하 자리를 반올림한 결과를 얻고
해당 결과값에 10의 거듭제곱을 곱해주는 방법을 사용할 수 있습니다.
주어진 문제를 풀어보며 반올림 원리에 대해 이해해 봅시다.
2. 소수점 자리 반올림 : 강제 형 변환
public class Main { public static void main(String[] args) { double d = 16.459; double res = (double)Math.round(d * 100) / 100; // d * 100 : 1645.9 // Math.round(d * 100) : 1646 // (double)Math.round(d * 100) : 1646.0 // (double)Math.round(d * 100) / 100 : 16.46 System.out.println(res); } }
3. 소수점 자리 반올림 : 자동 형 변환
public class Main { public static void main(String[] args) { double d = 16.459; double res = Math.round(d * 100) / 100.0; // d * 100 : 1645.9 // Math.round(d * 100) : 1646 // Math.round(d * 100) / 100.0 : 16.46 System.out.println(res); } }
❗활용 : 소수점 한 자리까지 반올림하여 출력하기
public class Main { public static void main(String[] args) { double d = 16.459; double res = Math.round(d * 10) / 10.0; // d * 10 : 164.59 // Math.round(d * 10) : 165 // Math.round(d * 10) / 10.0 : 16.5 System.out.println(res); } }
즉
소수점 한 자리까지 반올림 : Math.round(n * 10) / 10.0
소수점 두 자리까지 반올림 : Math.round(n * 100) / 100.0
소수점 n 자리까지 반올림 : Math.round(n * 10ⁿ) / 10ⁿ.0
앞으로 위의 원리를 기억하며, 반올림 문제를 풀어야겠습니다.
작은 도움이라도 되었길 바라며.. 모두 자바의 마스터가 되고 계시길 바랄게요 :)
'네이버클라우드 캠프 | BE > Java 과제' 카테고리의 다른 글
[네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기 (0) 2023.04.12 [네이버클라우드 캠프/2주차] 재귀메서드 (feat. BigInteger) (0) 2023.04.12 [네이버클라우드 캠프/2주차] 클래스의 생성과 배열 관련 메서드 (1) 2023.04.11 [네이버클라우드 캠프/1주차] 배열 (feat.전화번호부) (0) 2023.03.22 [네이버클라우드 캠프/1주차] 배열의 출력 (0) 2023.03.22