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

JavaScript로 숫자를 인도 통화(루피) 형식으로 변환하는 방법

문제 상황

임의의 숫자가 주어졌을 때, 해당 숫자를 받아 인도 통화 형식으로 변환한 결과를 반환하는 JavaScript 함수를 작성해야 한다고 가정해 보겠습니다.

인도 통화 표기법은 일반적인 서양식 방식과 다릅니다. 서양에서는 세 자리마다 콤마를 찍지만, 인도에서는 맨 앞 세 자리 이후에는 두 자리씩 끊어서 콤마를 표시합니다. 예를 들어 129943은 "1,29,943"으로 표기됩니다.

원하는 결과는 다음과 같습니다.

toCurrency(1000) --> ₹1,000.00
toCurrency(129943) --> ₹1,29,943.00
toCurrency(76768798) --> ₹7,67,68,798.00

해결 방법: toLocaleString() 메서드 활용

JavaScript의 내장 메서드인 toLocaleString()을 사용하면 별도의 변환 로직을 직접 구현할 필요 없이 간단하게 해결할 수 있습니다. 핵심은 로케일을 'en-IN'(영어-인도)으로 지정하고, 옵션 객체에 통화 관련 설정을 추가하는 것입니다.

  • locale: 'en-IN' — 인도 영어 로케일을 적용하여 인도식 숫자 그룹화 규칙(두 자리씩 묶기)을 사용합니다.
  • style: 'currency' — 출력 형식을 통화로 지정합니다.
  • currency: 'INR' — 인도 루피(Indian Rupee) 통화 기호(₹)를 표시합니다.

예제 코드

const num1 = 1000;
const num2 = 129943;
const num3 = 76768798;

const toIndianCurrency = (num) => {
   const curr = num.toLocaleString('en-IN', {
      style: 'currency',
      currency: 'INR'
   });
   return curr;
};

console.log(toIndianCurrency(num1));
console.log(toIndianCurrency(num2));
console.log(toIndianCurrency(num3));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

₹1,000.00
₹1,29,943.00
₹7,67,68,798.00

참고: 인도식 숫자 표기법의 원리

인도의 숫자 표기 방식은 라크(Lakh)와 크로레(Crore)라는 고유한 단위 체계를 기반으로 합니다.

  • 1 라크(Lakh) = 100,000 (10만)
  • 1 크로레(Crore) = 10,000,000 (1천만)

따라서 76768798은 7크로레 67라크 68798에 해당하며, "₹7,67,68,798.00"처럼 표기됩니다. 소수점 아래 두 자리(.00)는 통화 스타일 옵션에 의해 자동으로 추가된 것입니다.

이처럼 toLocaleString() 메서드 하나만으로 국가별 통화 형식을 손쉽게 처리할 수 있으며, 미국 달러(USD), 유로(EUR) 등 다른 통화로도 동일한 방식으로 응용할 수 있습니다.