2011-04-07 13 views
5

मेरा DecimalFormat कभी-कभी '?' लौटा रहा है format() पर प्रयास करते समय। क्या कोई ऐसा इनपुट है जो इस परिदृश्य को बनाएगा?जावा डेसिमलफॉर्मैट एक "?" देता है

उदाहरण के लिए:

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

क्या X संभवतः हो सकता है?

+0

क्या एक्स, यह कैसे घोषित किया जाता है, और कैसे परिभाषित किया गया है? –

+0

क्या आप हमें एक छोटा लेकिन पूरा उदाहरण दे सकते हैं जो समस्या का प्रदर्शन करता है? –

+1

मेरा प्रश्न बेहतर ढंग से phrased किया जाना चाहिए था, लेकिन सामान्य सवाल का जवाब देने के लिए देख रहा था "किस मामले में decimalFormat एक '?' जब प्रारूप() 'आईएनजी – tinkertime

उत्तर

11

यह कोई प्रश्न चिह्न नहीं है, यह U+FFFD REPLACEMENT CHARACTER है, जिसे प्रदर्शित किया गया है? चूंकि इसे आउटपुट एन्कोडिंग में मैप नहीं किया जा सकता है:

NaN को एक स्ट्रिंग के रूप में स्वरूपित किया गया है, जिसमें आमतौर पर एक वर्ण \ uFFFD होता है। यह स्ट्रिंग DecimalFormatSymbols ऑब्जेक्ट द्वारा निर्धारित की जाती है। यह एकमात्र मूल्य है जिसके लिए उपसर्ग और प्रत्यय का उपयोग नहीं किया जाता है।

इसी प्रकार,? अनंतता के प्रतिनिधित्व में U+221E INFINITY वर्ण (∞) है।

इन्फिनिटी को एक स्ट्रिंग के रूप में स्वरूपित किया गया है, जिसमें आम तौर पर एक एकल वर्ण \ u221E होता है, सकारात्मक या नकारात्मक उपसर्ग और प्रत्यय लागू होते हैं। अनंतता स्ट्रिंग decimalFormatSymbols ऑब्जेक्ट द्वारा निर्धारित की जाती है।

यह भी देखें:

5

यह वापस आएगा? " यदि XFloat.NaN या Float.POSITIVE_INFINITY है। ऐसा लगता है कि Float.NEGATIVE_INFINITY रिटर्न "-?" देता है।

0

मैं बस बहुत समान समस्या हल कर दिया है। मेरे मामले में मैं वसंत में मुद्रा चिह्न वापस करने की कोशिश कर रहा था और इसे थाइमेलीफ टेम्पलेट में प्रदर्शित करता था।

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

तो यह वास्तव में सही रूप से स्वरूपित स्ट्रिंग लौट रहा था लेकिन इसके बजाए ब्राउज़र में, उदा। €99.99 मुझे ?99.99 मिल रहा था - इसलिए मुद्रा चिह्न के बजाय प्रश्न चिह्न प्रदर्शित किया गया था।

अंत में, कि, मेरे स्प्रिंग विन्यास के साथ एक समस्या थी कि मैं अपने विन्यास को characterEncoding जोड़कर हल:

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    ... 
    <property name="characterEncoding" value="UTF-8" /> 
</bean> 
संबंधित मुद्दे