소수점 반올림하는 방법
이번 포스팅은 Java에서 Double 또는 Float 타입의 값에서 소수점 반올림하는 몇 가지 방법들을 소개합니다.
방법 1. DecimalFormat 클래스
DecimalFormat 클래스 생성자에 원하는 Format 형식을 문자열로 전달합니다.
다음 예제는 소수점 둘째 자리까지 반올림합니다.
public static void main(String args[]) {
Double doubleValue = 15.568;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println("doubleValue: " + df.format(doubleValue));
}
[실행 결과]
doubleValue: 15.57
또는 DecimalFormat 클래스 생성자에 "#.##"을 전달합니다.
public static void main(String args[]) {
Double doubleValue = 15.568;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println("doubleValue: " + df.format(doubleValue));
}
[실행 결과]
doubleValue: 15.57
DecimalFormat 클래스 생성자에 전달되는 문자열 0과 #의 차이점은 0 표시 여부입니다.
- 0: 자릿수만큼 0을 표시합니다.
- #: 0은 생략합니다.
public static void main(String args[]) {
Double doubleValue = 15.51;
DecimalFormat df1 = new DecimalFormat("0.0000");
DecimalFormat df2 = new DecimalFormat("#.####");
System.out.println("0.0000: " + df1.format(doubleValue));
System.out.println("#.####: " + df2.format(doubleValue));
}
[실행 결과]
0.0000: 15.5100
#.####: 15.51
방법 2. BigDecimal 클래스
또 다른 방법으로 BigDecimal 클래스를 사용합니다.
BigDecimal 클래스 생성자에 double 또는 float 타입의 값을 문자열로 전달한 다음 setScale() 메서드를 사용하여 소수점을 반올림합니다.
setScale() 메서드의 첫 번째 매개변수는 자릿수이며, 두 번째 매개변수는 반올림, 올림, 내림 설정 값입니다.
다음 예제는 소수점 둘째 자리까지 반올림, 올림, 내림 처리된 값을 출력합니다.
public static void main(String args[]) {
Double doubleValue = 15.585;
BigDecimal bd = new BigDecimal(Double.toString(doubleValue));
System.out.println("doubleValue 반올림: " + bd.setScale(2, RoundingMode.HALF_UP));
System.out.println("doubleValue 올림: " + bd.setScale(2, RoundingMode.UP));
System.out.println("doubleValue 내림: " + bd.setScale(2, RoundingMode.DOWN));
}
[실행 결과]
doubleValue 반올림: 15.59
doubleValue 올림: 15.59
doubleValue 내림: 15.58
방법 3. String 클래스의 format 메서드
문자열을 포맷 처리하는 String 클래스의 format() 메서드를 사용하여 소수점을 특정 자리까지 반올림할 수 있습니다.
다음 예제는 소수점 둘째 자리까지 반올림합니다.
public static void main(String args[]) {
Double doubleValue = 15.585;
System.out.println("doubleValue: " + String.format("%.2f", doubleValue));
}
[실행 결과]
doubleValue: 15.59
방법 4. Math 클래스의 round 메서드
마지막 방법으로 Math 클래스의 round() 메서드를 사용하여 부동 소수점 숫자를 특정 자리까지 반올림할 수 있습니다.
다음 예제는 소수점 둘째 자리까지 반올림합니다.
public static void main(String args[]) {
Double doubleValue = 15.58546;
Double rounded = Math.round(doubleValue * 100D) / 100D;
System.out.println("doubleValue: " + rounded);
}
[실행 결과]
doubleValue: 15.59
소수점 넷째 자리까지 반올림하고 싶다면, 부동 소수점 숫자에 1000을 곱하는 연산을 round() 메서드에 전달 후 반환된 결과를 1000으로 나눕니다.
public static void main(String args[]) {
Double doubleValue = 15.58546;
Double rounded = Math.round(doubleValue * 10000D) / 10000D;
System.out.println("doubleValue: " + rounded);
}
[실행 결과]
doubleValue: 15.5855
'Java' 카테고리의 다른 글
[Java]Object 클래스의 toString 메서드 (0) | 2022.09.02 |
---|---|
[Java]난수 생성 방법 (0) | 2022.08.31 |
[Java]LocalDateTime 값 변경 방법(날짜 및 시간 변경) (0) | 2022.08.13 |
[Java]시간 더하기 및 빼기(LocalTime 더하기 및 빼기) (0) | 2022.08.13 |
[Java]날짜 더하기 및 빼기(LocalDate 더하기 및 빼기) (0) | 2022.08.13 |
댓글