Java

[Java]소수점 반올림하는 방법

DevStory 2022. 8. 16.

소수점 반올림하는 방법

이번 포스팅은 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
반응형

댓글