티스토리 뷰

Float 자료형의 경우에는 소숫점 첫째자리까지는 0값이어도 반드시 표기해주지만 소숫점둘째자리부터 모든 0값들은 무효한 데이터로 인식하고 표기해주지 않는것 같다.

 

예를들어, 3.000 과 같은 값이 있으면 이는 3.0으로 표현된다.

하지만, 3.1230 과 같은 값이 있다면 이는 3.123으로 표현된다.

 

그러다보니 화면에서 어떤값은 소숫점 첫째자리까지만 있고 어떤값은 둘째짜리까지 다 있고 해서 자릿수를 맞춰달라는 요구사항이 들어왔다.

 

보통은 numberformat을 이용해서 string으로 변환한 값을 jsp로 보내지만,

이번의 경우엔 이미 보내고 있는 값들이 model내에 셋팅된 값이라 굉장히 귀찮은 작업이 되버린다.

 

일단은 자바내에선 소숫점 둘째자리까지 무조건 표현해 주기 위해선 printf을 사용하는 방법이 있다.

근데 사실상 내가 사용하기에는 무리가 있다.

 

System.out.printf( "%04.2f", model.getExpertPoint());

<-- 이런식으로 사용하면 된다.

0은 소숫점아래 무효데이터를 0으로 표기하라는 의미이고, 4는 소숫점 위 자리가 2개라는 의미가 된다.

2는 소숫점 아래 둘째자리까지란 의미이다.

 

 

이보다는 jsp단에서 처리하는게 낫겠다 생각이 들어서 jstl을 찾아봤다.

생각보다 간단히 해결된다.

 

jsp상단에는 포멧관련 태그라이브러리 정보를 적어준다.

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

그리고 실제 표기하고자 하는 데이터를 아래처럼 적어주면된다.

<fmt:formatNumber value="${hospitalModel.expertPoint}" type="pattern" pattern="0.00" />

<fmt:formatNumber value="[값]" type="[number/currency/percent/pattern]" pattern="[출력 패턴 #.##]" />

 

 

 

참고1]

확장특수문자 (escape sequence) Java Beginning

2012/05/30 17:11

복사 http://blog.naver.com/jheegook/60163555352

전용뷰어 보기

확장특수문자 (escape sequence)

 =============================================================================

        char x;
        x = 'A';
        System.out.println(x); 

 

        System.out.printf(" %c -> %d \n", x, (int)x);
        System.out.print(x);

 =============================================================================

 

 

정수의 출력에 사용될 수 있는 옵션

format

설명

int i = 65 일때 결과

%d

10진수(decimal integer)

65

%o

8진수(octal integer)

101

%x

16진수(hexadecimal integer)

41

%c

문자

A

%s

문자열

65

%5d

5자리 숫자. 빈자리는 공백으로 채움.

65

%-5d

5자리 숫자. 빈자리는 공백으로 채움(왼쪽 정렬)

65

%05d

5자리 숫자. 빈자리는 0으로 채움.

00065

   

 

문자열의 출력에 사용될 수 있는 옵션

format

설명

%s

문자열(string)

%5s

5자리 문자열. 빈자리는 공백으로 채움

%-5s

5자리 문자열. 빈자리는 공백으로 채움(왼쪽 정렬)

   

 

실수의 출력에 사용될 수 있는 옵션

format

설명

float f = 1234.56789f

%e

지수형태표현(exponent)

1.2345678e+03

%f

10진수(decimal float)

1234.56789

%3.1f

출력될 자리수를 최소 3자리(소수점포함), 소수점

이하 1자리(2번째 자리에서 반올림)

1234.6

%8.1f

소수점이상 최소 6자리, 소수점 이하 1자리.

출력될 자리수를 최소 8자리(소수점포함)를 확보.

빈자리는 공백으로 채움(오른쪽 정렬)

1234.6

%08.1f

소수점이상 최소 6자리, 소수점 이하 1자리.

출력될 자리수를 최소 8자리(소수점포함)를 확보.

빈자리는 0으로 채움

001234.6

%-8.1f

소수점이상 최소 6자리, 소수점 이하 1자리.

출력될 자리수를 최소 8자리(소수점포함)를 확보.

빈자리는 공백으로 채움(왼쪽 정렬)

1234.6

   

 

특수문자를 출력하는 옵션

format

설명

\t

tap

\n

new line

%%

%

   

 

날짜와 시간의 출력에 사용될 수 있는 옵션

format

설명

결과

%tR

%tH:%tM

시분(24시간)

16:15

16:15

%tT

%tH:%tM:%tS

시분초(24시간)

16:15:13

16:15:13

%tD

%tm/%d/%ty

월일년

05/30/12

05/30/12

%tF

%tY-%tm-%td

년월일

2012-05-30

2012-05-30

   

 

 

참고2]

JSTL 포맷 라이브러리 

 

 1. 숫자 관련

 <fmt:formatNumber value="[값]" type="[number/currency/percent/pattern]" pattern="[출력 패턴 #.##]" />

 type 

 

 type

 

 EX

 number

 천단위 끊어서 출력(첫자리는 1이상의 숫자로 시작)

 

 

 00123456789   ->   123,456,789

 currency

 천단위 끊고 소숫점 2째 짜리까지

currencySymbol 

숫자 앞에 나올 심볼(\/$ 등) 

 1000  ->  \1,000.00

 percent

 퍼센트로 출력

 

 

 0.3 -> 30% 

 

 

 2. 날짜 관련

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

<jsp:useBean id="date" class="java.util.Date"/>

또는

<c:set var="date" value="<%=new java.util.Date()%>"/> 

  

<fmt:formatDate value="${date}" type="[date/time/both]" timeStyle="[full/short/medium/long]" dateStyle="[full/short/medium/long]" pattern="[날짜 패턴]" /> 

 

 속성

 값

 설명

 

 type

 date

 날짜

 time

 시간

 both

 날짜 시간

 dateStyle

 full, long, medium, short

 날짜의 출력스타일지정(DateFormat 클래스에 지정)

 timeStyle

 full, long, medium, short

 시간의 출력스타일지정(DateFormat 클래스에 지정)

 pattern

 yyyy-MM-dd HH:mm EEE

 직접 출력 스타일 지정

(SimpleDateFormat의 패턴 이용)

 

 

반응형

'Computer > JAVA' 카테고리의 다른 글

이클립스와 JSmooth를 이용하여 실행파일(exe)만들기  (0) 2015.10.02
[JAVA] replace 사용  (0) 2010.01.08
[JAVA] ConcurrentHashMap  (2) 2009.12.16
Java Mail  (0) 2009.05.14
jdk 1.4와 jdk 1.5 의 차이점  (0) 2009.05.14