2011-04-07 3 views
5

DecimalFormat은 때때로 '?'를 반환합니다. 시도 할 때 format(). 이 시나리오를 만드는 입력이 있습니까? 예를 들어Java DecimalFormat은 "?"문자를 반환합니다.

:

DecimalFormat df = new DecimalFormat("#.####"); 
df.format(X); // output : '?' 

X가 뭘 할 수 있겠 소?

+0

을 정의한다 : 결국

, 그게 내가 내 구성에 characterEncoding를 추가하여 해결하는 것이 나의 봄 구성에 문제입니까? –

+0

문제를 증명하는 짧지 만 완전한 예를 들어 주시겠습니까? –

+1

내 질문에 더 잘 어울려야했지만 일반적인 질문에 대한 대답을 찾고있었습니다. "어떤 경우에 DecimalFormat에서 '?' format()을 사용하여 – tinkertime

답변

11

물음표가 아니며, U+FFFD REPLACEMENT CHARACTER으로 표시되어 있습니다.

NaN은 일반적으로 \ uFFFD라는 단일 문자로 구성된 문자열로 서식이 지정되어 있기 때문에 출력 인코딩에 매핑 할 수 없습니다. 이 문자열은 DecimalFormatSymbols 객체에 의해 결정됩니다. 이것은 접두어와 접미사가 사용되지 않는 유일한 값입니다.

마찬가지로,? 무한대 표현은 U+221E INFINITY 문자 (∞)입니다.

무한대는 일반적으로 하나의 문자 \ u221E가있는 문자열로 서식이 지정되며 양수 또는 음수의 접두사와 접미사가 적용됩니다. 무한 문자열은 DecimalFormatSymbols 객체에 의해 결정됩니다.

은 참조 :

5

"?"이 표시됩니다. XFloat.NaN 또는 Float.POSITIVE_INFINITY 인 경우 Float.NEGATIVE_INFINITY은 "-?"를 반환합니다.

0

난 그냥 매우 비슷한 문제를 해결했다. 제 경우에는 통화 기호를 Spring으로 반환하고 Thymeleaf 템플릿에 표시하려고했습니다.

public String getAmountDue() { 
    DecimalFormat decimalFormat = new DecimalFormat("¤0.00"); 
    decimalFormat.setCurrency(this.currency); 
    String result = decimalFormat.format(amountDue); 
    return result; 
} 

그래서 이것은 실제로 브라우저에서 대신, 예를 들어, 올바른 형식의 문자열을 반환되었지만 €99.99 나는 ?99.99을 얻고 있었다 - 그래서 통화 기호 대신 물음표가 표시되었다. X, 그것을 선언하는 방법, 어떻게 무엇을

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    ... 
    <property name="characterEncoding" value="UTF-8" /> 
</bean> 
관련 문제