2010-01-13 8 views

उत्तर

21

यहाँ एक मैं हमेशा या तो एक जावा वर्ग में या fmt के माध्यम से उपयोग करते हुए अंत है

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00"); 
String formatted = format.format(15.5); 

यह हमेशा कम से कम एक $ 0.00 पैदा करता है और जब प्रदर्शित अनुरूप है। जहां आवश्यक हो वहां हजारों सेपरेटर्स भी शामिल हैं। यदि आप अपनी आवश्यकता है तो आप डॉलर के चिह्न के सामने ऋण चिह्न को स्थानांतरित कर सकते हैं।

2

यदि आप डिफ़ॉल्ट पर भरोसा करने के बजाय एक विशिष्ट प्रारूप चाहते हैं तो अपना खुद का DecimalFormat बनाना संभवतः संभव है।

संपादित करें: आप शायद भी DecimalFormat को NumberFormat.getCurrencyInstance() का परिणाम डाली और अपनी पसन्द के अनुसार यह समायोजित कर सकते हैं। formatNumber JSTL टैग:

+0

शायद आप ठीक कह रहे हैं, लेकिन अपने आवेदन में सक्षम होना चाहिए च स्थानीय स्थान पर ऑरमत मुद्रा। क्या उन सभी लोकेशंस के लिए फॉर्मेट करना लागू करना मुश्किल नहीं होगा? –

30

इसे लोकेल-स्वतंत्र तरीके से करने के लिए NumberFormat.getCurrencyInstance() द्वारा डेसिमलफॉर्मेट की थोड़ी-थोड़ी ट्विकिंग की आवश्यकता होती है। यहाँ है कि मैं क्या था (एंड्रॉयड पर परीक्षण) है:

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC, Currency.getSymbol() सभी प्रणालियों के लिए सभी स्थानों के लिए एक मूल्य वापस आ सकते हैं नहीं है, लेकिन यह प्रमुख लोगों के लिए काम करना चाहिए (और मुझे लगता है कि उस पर एक उचित fallback है अपनी ही है, तो आप कुछ भी करने को) नहीं होना चाहिए

1

प्रयास करें:

NumberFormat.getCurrencyInstance(Locale.CANADA);

संबंधित मुद्दे