2017-01-15 1 views
0

다음 않는 NumberFormatter는 할 수있는 방법이 있나요 :조건부 NumberFormatter?

  1. 더블 5.0과 같은 전체 숫자 인 경우는, 표시 "5"

  2. 더블은 5.6와 같은 소수 인 경우

    , 표시 "5.6"

+1

대답은 '예'입니다. 자신이 좋아하는 것을하기 위해'NumberFormatter'의 고유 한 서브 클래스를 작성할 수 있습니다. –

+0

나는 http://stackoverflow.com/questions/41657200/how-to-default-an-edittext-to-integer-but-allow-decimal-input/41657315에서 해결책을 시도했지만 아무 것도 노력하지 않아서 형식 솔루션 – KaliMa

+0

@DavidWallace 확신 할 수 있지만이 경우 어떻게 할 것인지를 알고 있다면 물어 보지 않았을 것입니다. – KaliMa

답변

-1
double someNum = 5.6d; 
DecimalFormat df = new DecimalFormat("#.#"); 
String num = df.format(someNum); 
if (num.substring(num.length - 1).equals("0")) { 
    num = num.substring(0, num.length - 2); 
} 
System.out.println(num); 

DecimalFormat 인스턴스는 문자열로 이중 포맷합니다. 이 코드는 십진수 자리 오른쪽에있는 첫 번째 자릿수의 10 번째 자리를 확인하고 0 인 경우 정수만 표시합니다. 그렇지 않으면 전체 정밀도를 나타냅니다.

+0

0을 자르지 않습니까? 사용자가 120을 입력 한 경우와 마찬가지로 12로 낮 춥니 다. – KaliMa

+1

실제로 코드를 테스트 했습니까? 귀하의 질문은 소수점 이하의 자릿수를 가진 숫자에 대해서만 질문했습니다. –

+0

글쎄, 내가 테스트하기 전에 보통 두 번째 또는 두 번째 코드를 본다.하지만 네, 작동하는 것처럼 보입니다. 나는 단지 어떻게 보지 못합니다. – KaliMa