DecimalFormat df = new DecimalFormat("000");
return df.format(num);
}
이렇게 만들어서 숫자를 출력하면
023
057
009
.
.
.
이런식으로 출력이 되는데요
" _ " 는 빈자리를 표시.
_23
_57
__9
.
.
이렇게 출력하고싶습니다.
new DecimalFormat("#00"); 이렇게 하면
23
57
09
.
.
이런식으로 나와버리네요..
Anser
저도 수 앞이나 뒤로 공백을 넣어 정렬하는 기능을 찾아 보았지만
(C의 런타임 함수 중에 있는 printf와 비슷하게 쓰려는 목적으로 찾았지요)
API 문서에는 수 자체의 형식화를 위한 설명만 나와있더군요 ^^;
수의 앞이나 뒤에 공백이나 기타 기호를 넣어서 형식화 하는것은 수 자체에 대한
형식화가 아니기 때문에 DecimalFormat 클래스에서는 지원하지 않습니다.
이것을 보완하려면 어쩔 수 없이 별도의 메소드를 만들어서 써야 하지요.
아래의 코드가 참고가 될것 같군요 ^^;
테스트 해보시고 적당히 변형하여 사용하시면 될겁니다.
public class test {
private static final char[] m_sharedArr = new char[128];
private static String format0(String s, int size) {
int len = s.length();
int absSize = (size > 0) ? size : -size;
if (len < absSize) {
String sp = null;
synchronized (m_sharedArr) {
int l = absSize - len;
for (int i=0; i < l; i++)
m_sharedArr[i] = ' ';
sp = new String(m_sharedArr, 0, l);
}
if (size > 0)
s = sp + s;
else
s = s + sp;
}
return s;
}
public static String format(long n, int size) {
return format0(String.valueOf(n), size);
}
public static String format(double n, int size) {
return format0(String.valueOf(n), size);
}
public static String format(Number n, int size) {
return format0(String.valueOf(n), size);
}
public static void main(String[] args) {
System.out.println("[" + format(20, 10) + "]");
System.out.println("[" + format(20.332, 10) + "]");
System.out.println("[" + format(20, -10) + "]");
System.out.println("[" + format(20.332, -10) + "]");
}
}
혹시 JDK 1.5를 사용하고 계신다면 java.util.Formatter 클래스에 있는 format 메소드와 java.io.PrintStream 클래스의 printf 메소드를 참고 해보세요.
'JAVA' 카테고리의 다른 글
JAVA_[ 반올림/내림 (floor, ceil, round) ] (0) | 2014.09.16 |
---|---|
FILE객체 파일명을 바꾸면서 다른파일 생성하기 (0) | 2014.06.05 |
[Java] 숫자 금액표시(세자리 콤마) 및 소수점 포맷 (0) | 2014.04.28 |
[Java] 자리수 맞추기 String.format() (0) | 2014.04.28 |
[PaJamasI JAVA] 자바 System.getProperty OS정보 알아오기 (0) | 2014.04.02 |
[Java Tips] 날짜 비교하는 법 (0) | 2014.03.27 |
java 날짜수계산 질문 드립니다 (0) | 2014.03.27 |
JAVA(자바)로 이번주 초와 이번주 말을 찾고싶을때 (0) | 2014.03.27 |