float 또는 double을 소수점 둘째자리까지 반올림하는 방법에 대해서 알아보겠습니다. 이것을 응용하여 소수점 n자리까지 반올림하도록 구현할 수 있습니다.

1. String.format()을 이용한 방법

String.format("%.2f", number) 처럼 숫자 number를 소수점 2자리까지 표시할 수 있습니다.

  • %.nf는 소수점 n자리까지 표시하며, n+1 자리에서 반올림
public class Example {

    public static void main(String[] args) {

        double number = 3.456;
        String formattedNumber = String.format("%.2f", number);
        System.out.println(formattedNumber);
    }
}

Output:

3.46

2. Math.round()를 이용한 방법

Math.round(n)는 숫자 n을 반올림하여 정수로 만듭니다. 소수점 3자리 이상 있는 실수를 2자리까지 반올림하려면, 숫자에 100을 곱하고 round()로 반올림하고 다시 100으로 나누면 됩니다.

  • 예를 들어, 3.456 * 100 = 345.6이고, round(345.6) = 346이 됩니다. 다시 100으로 나누면 346 / 100 = 3.46이 됩니다.
public class Example {

    public static void main(String[] args) {

        double number = 3.456;
        double roundedNumber = Math.round(number * 100.0) / 100.0;
        System.out.println(roundedNumber);
    }
}

Output:

3.46

3. DecimalFormat을 이용한 방법

  • new DecimalFormat("#.##") : 소수 2자리까지 반올림하는 포맷
  • df.format(number) : 소수 2자리까지 반올림하여 결과를 문자열로 리턴
  • Double.parseDouble(df.format(number)) : 소수 2자리까지 반올림된 문자열을 double로 변환
import java.text.DecimalFormat;

public class Example {

    public static void main(String[] args) {

        double number = 3.456;
        DecimalFormat df = new DecimalFormat("#.##");
        double roundedNumber = Double.parseDouble(df.format(number));
        System.out.println(roundedNumber);
    }
}

Output:

3.46

4. BigDecimal을 이용한 방법

아래와 같이 BigDecimal을 이용하여 소수점 2자리까지 반올림할 수 있습니다.

  • bd.setScale(2, BigDecimal.ROUND_HALF_UP) : 소수점 2자리까지 반올림
  • bd.doubleValue() : BigDecimal을 double로 변환
import java.math.BigDecimal;

public class Example {

    public static void main(String[] args) {

        double number = 3.456;
        BigDecimal bd = new BigDecimal(number);
        bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); // 둘째 자리 반올림
        double roundedNumber = bd.doubleValue();
        System.out.println(roundedNumber);
    }
}

Output:

3.46