Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 숫자를 소수점 n번째 자리까지 반올림하는 방법

개요

이 글에서는 Java에서 숫자를 소수점 n번째 자리까지 반올림하는 방법을 알아봅니다. 소수 값의 반올림은 CEIL(올림) 또는 FLOOR(내림) 개념을 기반으로 처리하며, Java에서는 DecimalFormat 클래스와 RoundingMode 열거형을 함께 사용하면 손쉽게 구현할 수 있습니다.

다음은 동작 예시입니다.

입력

입력값 : 3.1415

출력

출력값 : 3.2

알고리즘

1단계 - 시작
2단계 - float 타입 변수 my_input을 선언한다.
3단계 - 사용자로부터 값을 입력받거나 코드에 직접 값을 정의한다.
4단계 - DecimalFormat 객체를 생성하고 반올림 모드를 CEILING으로 설정한 뒤,
        지정한 소수점 자릿수만큼 반올림하여 결과를 저장한다.
5단계 - 결과를 출력한다.
6단계 - 종료

예제 1: 사용자 입력값 반올림하기

이 예제에서는 Scanner를 사용해 사용자가 직접 값을 입력하면, 해당 값을 소수점 첫째 자리까지 올림하여 결과를 콘솔에 출력합니다. 온라인 Java 컴파일러에서도 직접 실행해 볼 수 있습니다.

import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;
public class DecimalFormatting {
    public static void main(String[] args) {
        float my_input;
        System.out.println("Required packages have been imported");
        Scanner my_scanner = new Scanner(System.in);
        System.out.println("A scanner object has been defined ");
        System.out.print("Enter a decimal number : ");
        my_input = my_scanner.nextFloat();
        DecimalFormat roundup_decimal = new DecimalFormat("#.#");
        roundup_decimal.setRoundingMode(RoundingMode.CEILING);
        System.out.println("The rounded up value of " + my_input + " is ");
        System.out.println(roundup_decimal.format(my_input));
    }
}

출력 결과

Required packages have been imported
A scanner object has been defined
Enter a decimal number : 3.1415
The rounded up value of 3.1415 is
3.2

예제 2: 미리 정의된 값 반올림하기

이 예제에서는 반올림할 값이 코드 안에 미리 정의되어 있으며, 프로그램 실행 시 해당 값에 접근해 결과를 콘솔에 출력합니다.

import java.math.RoundingMode;
import java.text.DecimalFormat;
public class DecimalFormatting {
    public static void main(String[] args) {
        System.out.println("Required packages have been imported");
        double my_input = 3.1415;
        System.out.println("The decimal number is defined as " + my_input);
        DecimalFormat roundup_decimal = new DecimalFormat("#.#");
        roundup_decimal.setRoundingMode(RoundingMode.CEILING);
        System.out.println("The rounded up value of " + my_input + " is ");
        System.out.println(roundup_decimal.format(my_input));
    }
}

출력 결과

Required packages have been imported
The decimal number is defined as 3.1415
The rounded up value of 3.1415 is
3.2

마무리

이처럼 DecimalFormat의 패턴(#.#)에서 마침표 뒤의 # 개수를 조절하면 원하는 소수점 자릿수만큼 반올림할 수 있습니다. 예를 들어 #.##로 설정하면 소수점 둘째 자리까지 반올림됩니다. 또한 RoundingMode.HALF_UP(사사오입)나 RoundingMode.DOWN(버림) 등 다양한 반올림 모드를 상황에 맞게 선택할 수 있으며, 금융 계산처럼 정밀도가 중요한 경우에는 BigDecimal 클래스를 사용하는 것이 좋습니다.