semtax의 개발 일지

안드로이드에서 String.format 쓸 때 주의점 본문

개발/Android

안드로이드에서 String.format 쓸 때 주의점

semtax 2020. 5. 6. 22:37
반응형

 

개요

 

이번 포스팅에서는, 안드로이드에서 String.format을 쓸 때, 발생했던 문제점을 정리해보고자 한다.

 

 

문제점

보통, 특정 서식으로 이루어진 문자열을 만들때, 자바와 같은 경우 String.format 메서드를 써서 포매팅을 수행하게 된다.

 

 

하지만, 안드로이드에서는, String.format를 이용해서 부동소수점을 문자열 포맷팅 할때, 일부 디바이스에서 문제가 발생하게 된다.

 

대략적으로 아래와 같은 예외가 발생하게 된다.

 

 

Fatal Exception: java.lang.NullPointerException
Attempt to get length of null array

java.util.Formatter$FormatSpecifier.addZeros (Formatter.java:3505)
java.util.Formatter$FormatSpecifier.print (Formatter.java:3401)
java.util.Formatter$FormatSpecifier.print (Formatter.java:3332)
java.util.Formatter$FormatSpecifier.printFloat (Formatter.java:2893)
java.util.Formatter$FormatSpecifier.print (Formatter.java:2844)
java.util.Formatter.format (Formatter.java:2523)
java.util.Formatter.format (Formatter.java:2458)
java.lang.String.format (String.java:2770)

.....

 

 

해결책

 

 

부동 소수점의 경우에는 String.format 대신에, DecimalFormat 클래스를 이용해서 포매팅 하면 된다.

 

 

대략적으로 아래와 같이 해주면 된다.

final DecimalFormat fpsFormat = new DecimalFormat("#.0");
String result = fpsFormat.format(renderFps)
반응형
Comments