JSTL fmt:formatNumber 태그란?
JSP에서 금액이나 수치를 읽기 쉬운 형태로 표시하려면 JSTL(JSP Standard Tag Library)이 제공하는 <fmt:formatNumber> 태그를 활용하면 됩니다. 이 태그 하나로 숫자(NUMBER), 백분율(PERCENT), 통화(CURRENCY) 세 가지 유형의 값을 원하는 형식으로 간편하게 변환할 수 있습니다.
주요 속성
<fmt:formatNumber> 태그에서 사용할 수 있는 주요 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 표시할 숫자 값 | 예 | 없음 |
| type | NUMBER, CURRENCY, PERCENT 중 하나 | 아니오 | NUMBER |
| pattern | 출력에 적용할 사용자 정의 형식 패턴 | 아니오 | 없음 |
| currencyCode | 통화 코드(type = "currency"일 때 사용) | 아니오 | 기본 로케일에서 가져옴 |
| currencySymbol | 통화 기호(type = "currency"일 때 사용) | 아니오 | 기본 로케일에서 가져옴 |
| groupingUsed | 천 단위 그룹화(콤마) 여부(TRUE 또는 FALSE) | 아니오 | true |
| maxIntegerDigits | 출력할 정수부의 최대 자릿수 | 아니오 | 없음 |
| minIntegerDigits | 출력할 정수부의 최소 자릿수 | 아니오 | 없음 |
| maxFractionDigits | 출력할 소수부의 최대 자릿수 | 아니오 | 없음 |
| minFractionDigits | 출력할 소수부의 최소 자릿수 | 아니오 | 없음 |
| var | 형식화된 결과를 저장할 변수 이름 | 아니오 | 페이지에 바로 출력 |
| scope | 변수가 저장될 범위(page, request, session, application) | 아니오 | page |
사용 예제
다음은 미국 달러(USD) 형식으로 잔액을 출력하는 예제입니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "https://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:formatNumber Tag</title>
</head>
<body>
<h3>숫자 형식:</h3>
<c:set var = "balance" value = "120000.2309" />
<p>미국 통화(USD) :
<fmt:setLocale value = "en_US"/>
<fmt:formatNumber value = "${balance}" type = "currency"/>
</p>
</body>
</html>
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
숫자 형식:
미국 통화(USD) : $120,000.23
한국 원화(KRW)로 표시하기
로케일만 ko_KR로 변경하면 원화 기호(₩)가 붙은 형태로 출력됩니다.
<fmt:setLocale value = "ko_KR"/>
<fmt:formatNumber value = "${balance}" type = "currency"/>
한국 통화(KRW) : ₩120,000
pattern 속성으로 직접 형식 지정하기
type 속성 대신 pattern 속성을 사용하면 소수점 자릿수, 천 단위 구분 기호 등을 직접 제어할 수 있습니다.
<fmt:formatNumber value = "${balance}" pattern = "#,##0.00"/>120,000.23
이처럼 <fmt:formatNumber> 태그를 사용하면 별도의 자바 코드 없이 JSP만으로도 다양한 숫자·통화 형식을 깔끔하게 처리할 수 있습니다.