게으른 개발자의 끄적거림

Java int 정수형 숫자 원으로 환산 방법(3자리마다 , 표기)

끄적잉 2024. 5. 20. 22:26
반응형

Java int 정수형 숫자 원으로 환산 방법(3자리마다 , 표기)

 

Java에서 `int` 형 숫자를 한국 돈으로 표기할 때 3자리마다 쉼표를 추가하는 방법에 대해 자세히 설명하겠습니다. 이를 위해 `NumberFormat` 클래스와 `DecimalFormat` 클래스를 사용하는 방법, 그리고 사용자 정의 함수를 작성하는 방법을 소개하겠습니다. 이 과정은 다음과 같은 단계로 진행됩니다:

 


### 1. `NumberFormat` 클래스를 사용한 방법

#### 1.1. `NumberFormat` 클래스 소개
`NumberFormat` 클래스는 숫자를 로케일에 따라 형식화할 수 있는 기능을 제공합니다. `NumberFormat` 클래스는 `getInstance` 또는 `getCurrencyInstance` 메서드를 사용하여 인스턴스를 생성할 수 있습니다. 한국 원화(KRW)를 기준으로 숫자를 형식화할 때는 `Locale.KOREA`를 사용하면 됩니다.

 


#### 1.2. 기본 예제

다음은 `NumberFormat` 클래스를 사용하여 숫자를 한국 돈으로 형식화하는 간단한 예제입니다:

```java
import java.text.NumberFormat;
import java.util.Locale;

public class NumberFormatExample {
    public static void main(String[] args) {
        int amount = 123456789;
        
        // NumberFormat 인스턴스 생성
        NumberFormat numberFormat = NumberFormat.getInstance(Locale.KOREA);
        
        // 형식화된 문자열 출력
        String formattedAmount = numberFormat.format(amount);
        System.out.println(formattedAmount); // 출력: 123,456,789
    }
}
```

위의 코드에서 `NumberFormat.getInstance(Locale.KOREA)`를 사용하여 한국 로케일에 맞는 `NumberFormat` 인스턴스를 생성하고, `format` 메서드를 사용하여 숫자를 형식화했습니다.

#### 1.3. 통화 형식 추가
한국 돈의 경우, 숫자에 통화 기호(₩)를 추가하여 표시할 수 있습니다. 이를 위해 `getCurrencyInstance` 메서드를 사용할 수 있습니다:

```java
import java.text.NumberFormat;
import java.util.Locale;

public class CurrencyFormatExample {
    public static void main(String[] args) {
        int amount = 123456789;
        
        // Currency 인스턴스 생성
        NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(Locale.KOREA);
        
        // 형식화된 문자열 출력
        String formattedAmount = currencyFormat.format(amount);
        System.out.println(formattedAmount); // 출력: ₩123,456,789
    }
}
```

이 코드에서는 `NumberFormat.getCurrencyInstance(Locale.KOREA)`를 사용하여 통화 형식의 `NumberFormat` 인스턴스를 생성하고, `format` 메서드를 사용하여 숫자를 원화 통화 형식으로 형식화했습니다.

 

반응형


### 2. `DecimalFormat` 클래스를 사용한 방법

#### 2.1. `DecimalFormat` 클래스 소개
`DecimalFormat` 클래스는 숫자를 특정 패턴에 맞게 형식화할 수 있는 강력한 도구입니다. 이 클래스는 `applyPattern` 메서드를 사용하여 형식 패턴을 설정할 수 있습니다.

#### 2.2. 기본 예제

다음은 `DecimalFormat` 클래스를 사용하여 숫자를 3자리마다 쉼표를 추가하는 형식으로 변환하는 예제입니다:

```java
import java.text.DecimalFormat;

public class DecimalFormatExample {
    public static void main(String[] args) {
        int amount = 123456789;
        
        // DecimalFormat 인스턴스 생성 및 패턴 설정
        DecimalFormat decimalFormat = new DecimalFormat("#,###");
        
        // 형식화된 문자열 출력
        String formattedAmount = decimalFormat.format(amount);
        System.out.println(formattedAmount); // 출력: 123,456,789
    }
}
```

위의 코드에서 `DecimalFormat("#,###")`을 사용하여 3자리마다 쉼표를 추가하는 형식 패턴을 설정했습니다.

#### 2.3. 통화 기호 추가
통화 기호를 추가하려면 패턴에 통화 기호를 포함시킬 수 있습니다. 한국 원화를 나타내기 위해 `₩` 기호를 패턴에 추가할 수 있습니다:

```java
import java.text.DecimalFormat;

public class CurrencyDecimalFormatExample {
    public static void main(String[] args) {
        int amount = 123456789;
        
        // DecimalFormat 인스턴스 생성 및 패턴 설정
        DecimalFormat decimalFormat = new DecimalFormat("₩#,###");
        
        // 형식화된 문자열 출력
        String formattedAmount = decimalFormat.format(amount);
        System.out.println(formattedAmount); // 출력: ₩123,456,789
    }
}
```

이 예제에서는 `₩#,###` 패턴을 사용하여 숫자 앞에 원화 기호를 추가했습니다.

 

 


### 3. 사용자 정의 함수 사용

#### 3.1. 기본 개념
사용자 정의 함수를 사용하여 숫자를 3자리마다 쉼표를 추가하는 형식으로 변환할 수 있습니다. 이를 위해 문자열 조작을 활용할 수 있습니다.

#### 3.2. 기본 예제
다음은 문자열 조작을 통해 숫자를 3자리마다 쉼표를 추가하는 형식으로 변환하는 예제입니다:

```java
public class CustomFormatExample {
    public static void main(String[] args) {
        int amount = 123456789;
        String formattedAmount = formatWithCommas(amount);
        System.out.println(formattedAmount); // 출력: 123,456,789
    }

    public static String formatWithCommas(int amount) {
        StringBuilder sb = new StringBuilder();
        String amountStr = Integer.toString(amount);
        
        int length = amountStr.length();
        int commaCount = (length - 1) / 3;
        
        int index = 0;
        for (int i = 0; i < length; i++) {
            sb.append(amountStr.charAt(i));
            if ((length - i - 1) % 3 == 0 && index < commaCount) {
                sb.append(',');
                index++;
            }
        }
        
        return sb.toString();
    }
}
```

위의 예제에서는 `StringBuilder`와 반복문을 사용하여 숫자를 3자리마다 쉼표를 추가하는 형식으로 변환했습니다.

 

 


### 4. 고급 사용자 정의 함수

#### 4.1. 정수 및 소수 처리
정수 뿐만 아니라 소수를 포함한 숫자를 처리하는 사용자 정의 함수를 작성할 수 있습니다. 다음은 소수를 포함한 숫자를 3자리마다 쉼표를 추가하는 형식으로 변환하는 예제입니다:

```java
public class AdvancedCustomFormatExample {
    public static void main(String[] args) {
        double amount = 123456789.987;
        String formattedAmount = formatWithCommas(amount);
        System.out.println(formattedAmount); // 출력: 123,456,789.987
    }

    public static String formatWithCommas(double amount) {
        String[] parts = Double.toString(amount).split("\\.");
        String integerPart = parts[0];
        String decimalPart = parts.length > 1 ? parts[1] : "";

        StringBuilder sb = new StringBuilder();
        int length = integerPart.length();
        int commaCount = (length - 1) / 3;

        int index = 0;
        for (int i = 0; i < length; i++) {
            sb.append(integerPart.charAt(i));
            if ((length - i - 1) % 3 == 0 && index < commaCount) {
                sb.append(',');
                index++;
            }
        }

        if (!decimalPart.isEmpty()) {
            sb.append('.').append(decimalPart);
        }

        return sb.toString();
    }
}
```

위의 예제에서는 `split` 메서드를 사용하여 정수 부분과 소수 부분을 분리하고, 각각을 처리하여 다시 결합했습니다.

 


### 5. 결론

Java에서 `int`형 숫자를 한국 돈으로 표기할 때 3자리마다 쉼표를 추가하는 방법에는 `NumberFormat` 클래스, `DecimalFormat` 클래스, 그리고 사용자 정의 함수를 사용하는 방법이 있습니다. 각각의 방법은 상황에 따라 장단점이 있으므로, 적절한 방법을 선택하여 사용할 수 있습니다.

- **`NumberFormat` 클래스**는 로케일에 따른 숫자 형식을 쉽게 적용할 수 있으며, 통화 형식도 지원합니다.
- **`DecimalFormat` 클래스**는 패턴을 사용하여 숫자를 세밀하게 형식화할 수 있는 강력한 도구입니다.
- **사용자 정의 함수**는 커스터마이징이 가능하며, 정수와 소수를 모두 처리할 수 있습니다.

이러한 방법들을 활용하면 다양한 상황에서 숫자를 한국 돈 형식으로 변환하여 사용자에게 친숙한 형식으로 보여줄 수 있습니다.

반응형