본문 바로가기
프로그래밍/Back-end

자바에서 소수점 버림 처리하는 다양한 방법

by @GodWin 2024. 11. 18.

-

-
소수점 처리, 특히 "소수점 이하를 버린다"는 작업은 자주 필요한 기능 중 하나입니다. 예를 들어, 계산 결과를 화면에 출력할 때 소수점 이하 자리를 없애고 싶을 때가 있죠. 자바에서는 이런 소수점 버림 작업을 다양한 방법으로 처리할 수 있습니다. 오늘은 그 방법들을 하나씩 알아보겠습니다.

1. Math.floor()로 소수점 버리기

첫 번째로 소개할 방법은 Math.floor()입니다. Math.floor()는 주어진 숫자보다 작거나 같은 가장 큰 정수로 내림을 해주는 메서드입니다. 즉, 소수점 이하를 버리고, 가장 가까운 정수로 내리는 거죠.

public class Main {
    public static void main(String[] args) {
        double number = 3.14159;
        double result = Math.floor(number);
        System.out.println(result);  // 3.0
    }
}

 
위 코드에서처럼 3.14159를 Math.floor()에 넘기면, 결과는 3.0이 나옵니다. 이때 반환 값은 double 타입이기 때문에, 소수점은 사라졌지만, 타입은 여전히 double이에요.
 

2. (int) 형변환으로 소수점 버리기

두 번째 방법은 간단하게 (int) 형변환을 사용하는 방법입니다. 이 방법은 소수점 이하를 버리고 정수 부분만 얻고 싶을 때 유용합니다.

public class Main {
    public static void main(String[] args) {
        double number = 3.14159;
        int result = (int) number;
        System.out.println(result);  // 3
    }
}

 
위와 같이 (int)로 형변환을 하면, 소수점 이하가 자연스럽게 버려지고 정수 부분만 남게 됩니다. 이 방법은 double 또는 float을 정수 타입으로 변환할 때 아주 유용하죠. 다만, 반환값은 int 타입으로 변환되니 주의해야 합니다.
 

3. DecimalFormat으로 소수점 자리수 제한하기

세 번째 방법은 DecimalFormat 클래스를 활용하는 방법입니다. DecimalFormat을 사용하면 소수점 이하의 자릿수를 세밀하게 제어할 수 있고, 원하는 형식대로 숫자를 출력할 수 있어요.

import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
        double number = 3.14159;
        DecimalFormat df = new DecimalFormat("#");
        System.out.println(df.format(number));  // 3
    }
}

 
이 코드에서 DecimalFormat("#")는 소수점 이하 자리를 모두 버리고 정수만 표시하겠다는 뜻입니다. 패턴을 "#"로 지정하면 소수점 이하 자리를 모두 없애고 정수만 반환됩니다. 이 방법은 출력 형식이 중요할 때 유용하게 쓸 수 있습니다.

 

4. BigDecimal로 정확한 소수점 처리하기

마지막으로 소개할 방법은 BigDecimal을 사용하는 방법입니다. BigDecimal은 고정 소수점 계산에서 아주 정확한 결과를 도출해주기 때문에, 소수점 이하를 어떻게 처리할지 세밀하게 제어할 수 있습니다.

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Main {
    public static void main(String[] args) {
        double number = 3.14159;
        BigDecimal bd = new BigDecimal(number);
        bd = bd.setScale(0, RoundingMode.DOWN);  // 소수점 이하 버림
        System.out.println(bd);  // 3
    }
}

 

여기서 setScale(0, RoundingMode.DOWN)은 소수점 이하를 버리고 정수만 남기도록 설정하는 방법입니다. BigDecimal은 매우 정밀한 계산을 할 수 있어, 큰 숫자나 고정밀도가 필요한 계산에서 많이 사용됩니다.

자바에서 소수점 이하를 버리는 방법은 생각보다 여러 가지가 있습니다.

  • Math.floor(): 내림을 해서 소수점 이하를 버립니다.
  • 형변환 (int): 간단히 정수로 변환해서 소수점 이하를 버립니다.
  • DecimalFormat: 출력 형식을 세밀하게 제어하며 소수점 이하를 버립니다.
  • BigDecimal: 정밀한 소수점 처리가 필요할 때 사용하며, 소수점 이하를 정확하게 버립니다.

각각의 방법은 상황에 따라 적합하게 사용할 수 있기 때문에, 원하는 처리 방식에 맞춰 선택하면 됩니다. 여러분도 다양한 방법을 실습하면서 자신에게 맞는 방법을 찾아보세요!