जावा में हजारों विभाजक कैसे सेट करें?
मेरे पास एक बिगडेसिमल का स्ट्रिंग प्रतिनिधित्व है जिसे मैं हजारों विभाजक के साथ प्रारूपित करना चाहता हूं और स्ट्रिंग के रूप में वापस करना चाहता हूं।
जावा में हजारों विभाजक कैसे सेट करें?
मेरे पास एक बिगडेसिमल का स्ट्रिंग प्रतिनिधित्व है जिसे मैं हजारों विभाजक के साथ प्रारूपित करना चाहता हूं और स्ट्रिंग के रूप में वापस करना चाहता हूं।
जवाबों:
यह काम करना चाहिए (JavaDoc पर आधारित)
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
JavaDoc के अनुसार, पहली पंक्ति में कलाकारों को अधिकांश स्थानों के लिए सहेजा जाना चाहिए।
getDecimalFormatSymbols()
का कहना है: Returns: a copy of the desired DecimalFormatSymbols
। इसलिए आपको setDecimalFormatSymbols(theCopy)
कॉपी बदलने के बाद उपयोग करना चाहिए ।
new
और इसे वापस DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
आप "," के साथ प्रारूप फ़ंक्शन का उपयोग कर सकते हैं;
int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
"," स्थानीय-विशिष्ट समूहीकरण वर्ण शामिल हैं।
.
एक विभाजक के रूप में उपयोग करना चाहता हूं ?
format()
एक स्पष्ट स्थान के साथ ( Local.US
उपयोग करने के लिए जाना जाता है ,
एक विभाजक के रूप में) और फिर की जगह ,
अपने कस्टम विभाजक के साथ: String.format(Locale.US, "%,d", n).replace(',', '.')
।
int
। या ए long
। या ए BigInteger
। और यदि आप उपयोग करना चाहते हैं तो च का उपयोग करें double
, float
या BigDecimal
।
BigDecimal bd = new BigDecimal(300000);
NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US"));
System.out.println(formatter.format(bd.longValue()));
संपादित करें
अंतरिक्ष जैसे कस्टम समूहन विभाजक प्राप्त करने के लिए, यह करें:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
symbols.setGroupingSeparator(' ');
DecimalFormat formatter = new DecimalFormat("###,###.##", symbols);
System.out.println(formatter.format(bd.longValue()));
NumberFormat
इच्छित गुणों के साथ एक ऑब्जेक्ट का निर्माण करते हैं और इसका उपयोग अपने स्वरूपित करने के लिए करते हैं BigDecimal
। एक BigDecimal
ही एक निर्दिष्ट मूल्य है, यह नहीं है एक निर्धारित प्रारूप है।
इस कोड को प्रारूपित करने का प्रयास करें जैसा कि ब्राज़ील में किया गया है:
DecimalFormat df = new DecimalFormat(
"#,##0.00",
new DecimalFormatSymbols(new Locale("pt", "BR")));
BigDecimal value = new BigDecimal(123456.00);
System.out.println(df.format(value.floatValue()));
// results: "123.456,00"
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
इस पैरामीटर को रिपोर्ट करने के लिए भेजें।
यदि आप Integer data type 1 के लिए हजार विभाजक का उपयोग कर रहे हैं।
String.format ("%, d \ n", 58625) और आउटपुट 58,625 होगा
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('|');
formatSymbols.setGroupingSeparator(' ');
String strange = "#,##0.###";
DecimalFormat df = new DecimalFormat(strange, formatSymbols);
df.setGroupingSize(4);
String out = df.format(new BigDecimal(300000).doubleValue());
System.out.println(out);
स्वीकार किए गए उत्तर को वास्तव में बदलना होगा अन्यथा काम नहीं करना चाहिए। GetDecimalFormatSymbols एक रक्षात्मक प्रतिलिपि बनाता है। इस प्रकार,
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
नई पंक्ति यह एक है: formatter.setDecimalFormatSymbols (प्रतीक);
के लिए दशमलव :
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat dfDecimal = new DecimalFormat("###########0.00###");
dfDecimal.setDecimalFormatSymbols(symbols);
dfDecimal.setGroupingSize(3);
dfDecimal.setGroupingUsed(true);
System.out.println(dfDecimal.format(number));
जैसा कि ऊपर उल्लेख किया गया है, निम्न लिंक आपको विशिष्ट देश कोड देता है जो जावा को संख्या को स्थानीय बनाने की अनुमति देता है। हर देश की अपनी शैली होती है।
ऊपर दिए गए लिंक में आपको देश कोड मिलेगा जिसे यहाँ रखा जाना चाहिए:
...(new Locale(<COUNTRY CODE HERE>));
उदाहरण के लिए स्विट्जरलैंड निम्नानुसार संख्याओं को प्रारूपित करता है:
1000.00 -> 1'000.00
इसे प्राप्त करने के लिए, निम्नलिखित कोड मेरे लिए काम करते हैं:
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de","CH"));
nf.setMaximumFractionDigits(2);
DecimalFormat df = (DecimalFormat)nf;
System.out.println(df.format(1000.00));
परिणाम अपेक्षित है:
1'000.00
public String formatStr(float val) {
return String.format(Locale.CANADA, "%,.2f", val);
}
formatStr(2524.2) // 2,254.20