উত্তর:
এটি কাজ করা উচিত (জাভেডকের উপর ভিত্তি করে অনির্ধারিত):
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
জাভাডকের মতে, প্রথম লাইনে থাকা কাস্টটি বেশিরভাগ লোকেলের জন্য সংরক্ষণ করা উচিত।
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"));
রিপোর্ট করার জন্য এই পরামিতিটি প্রেরণ করুন।
আপনি যদি পূর্ণসংখ্যার ডেটা টাইপের জন্য হাজার বিভাজক ব্যবহার করেন তবে 1 ব্যবহার করুন।
স্ট্রিং.ফর্ম্যাট ("%, 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.setDecimal FormatSymbols (চিহ্ন);
জন্য দশমিক :
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