숫자의 형식화
저도 수 앞이나 뒤로 공백을 넣어 정렬하는 기능을 찾아 보았지만
(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 메소드를 참고 해보세요.