কমা এবং বৃত্তাকার জন্য আমি কীভাবে একটি স্ট্রিং নম্বর ফর্ম্যাট করতে পারি?


142

স্ট্রিং হিসাবে আমাকে প্রদত্ত নিম্নলিখিত নম্বরটি ফর্ম্যাট করার সর্বোত্তম উপায় কী?

String number = "1000500000.574" //assume my value will always be a String

আমি চাই যে এটি মান সহ একটি স্ট্রিং হোক: 1,000,500,000.57

আমি এটিকে কীভাবে বিন্যাস করতে পারি?

উত্তর:


256

আপনি DecimalFormatক্লাসটি দেখতে চাইতে পারেন ; এটি বিভিন্ন লোকেল সমর্থন করে (যেমন: কিছু দেশে এর 1.000.500.000,57পরিবর্তে ফর্ম্যাট করা হবে)।

আপনার সেই স্ট্রিংটিকে একটি সংখ্যায় রূপান্তর করতে হবে, এটি দিয়ে এটি করা যেতে পারে:

double amount = Double.parseDouble(number);

কোড নমুনা:

String number = "1000500000.574";
double amount = Double.parseDouble(number);
DecimalFormat formatter = new DecimalFormat("#,###.00");

System.out.println(formatter.format(amount));

এই বিশেষ ক্ষেত্রে আমি কীভাবে নাম্বার ফর্ম্যাটটি ব্যবহার করতে পারি তার একটি উদাহরণ দেখাতে পারেন?
শিহান আলম

1
আপনি নীচের সমাধানটিও ব্যবহার করতে পারেন - পাবলিক স্ট্যাটিক স্ট্রিং getRoundOffValue (দ্বৈত মান) {ডেসিমাল ফরম্যাট ডিএফ = নতুন দশমিক ফরম্যাট ("##, ##, ##, ##, ##, ##, ## 0.00"); রিটার্ন df.format (মান); }
জিতেন্দ্র নাথ

আমি ডেসিমালফর্ম্যাট বিন্যাসের মতো পয়েন্টের আগে শূন্যকেও পছন্দ করি = নতুন ডেসিমাল ফর্ম্যাট ("#, ## 0.00"); - শূন্যের জন্য .০০ পাওয়া আমার পক্ষে ভুল মনে হচ্ছে
লিও

46

এটি স্ট্রিং.ফর্ম্যাট () ব্যবহার করেও সম্পন্ন করা যায়, আপনি যদি এক স্ট্রিংয়ে একাধিক সংখ্যার ফর্ম্যাট করে থাকেন তবে এটি সহজ এবং / বা আরও নমনীয় হতে পারে।

    String number = "1000500000.574";
    Double numParsed = Double.parseDouble(number);

    System.out.println(String.format("The input number is: %,.2f", numParsed));
    // Or
    String numString = String.format("%,.2f", numParsed);

"%। 2f" - "," বিন্যাসের স্ট্রিংয়ের অর্থ কমা সহ পৃথক অঙ্কের গোষ্ঠী এবং ".2" অর্থ দশমিকের পরে দুটি স্থানে গোল হয়।

অন্যান্য ফর্ম্যাটিং বিকল্পগুলির জন্য রেফারেন্সের জন্য, https://docs.oracle.com/javase/tutorial/java/data/number فارt.html দেখুন


42

একবার আপনি আপনার স্ট্রিংকে একটি সংখ্যায় রূপান্তরিত করে ব্যবহার করতে পারেন

// format the number for the default locale
NumberFormat.getInstance().format(num)

অথবা

// format the number for a particular locale
NumberFormat.getInstance(locale).format(num)

কিভাবে উভয় স্থানীয় নির্দিষ্ট এবং (বলুন) 2 দশমিক বৃত্তাকার?
জোনিক

6
আহ, কিছু মনে করবেন না, এটি খুঁজে পেয়েছেন:new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(locale))
জোনিক

16

এটি গুগলের এক নম্বর ফলাফলের জন্য দেওয়া format number commas java, এখানে এমন একটি উত্তর দেওয়া হয়েছে যা পুরো সংখ্যার সাথে কাজ করে এমন দশমিকের বিষয়ে চিন্তা করে না এমন লোকদের জন্য কাজ করে।

String.format("%,d", 2000000)

আউটপুট:

2,000,000

ফ্লোটের জন্যও কাজ করে, যেমন, প্রিন্টফ ("%, f \ n", দশমিক সংখ্যা)
ফিলওয়াক

12

আমি আমার নিজস্ব ফর্ম্যাটিং ইউটিলিটি তৈরি করেছি। যা আপনাকে অনেকগুলি বৈশিষ্ট্য দেওয়ার সাথে সাথে ফর্ম্যাটটি প্রক্রিয়া করতে অত্যন্ত দ্রুত :)

এটি সমর্থন করে:

  • কমা ফর্ম্যাটিং যেমন 1234567 হয় 1,234,567।
  • "হাজার (কে), মিলিয়ন (এম), বিলিয়ন (বি), ট্রিলিয়ন (টি)" সহ উপস্থাপিত
  • 0 থেকে 15 এর যথার্থতা।
  • যথার্থ পুনরায় আকার নির্ধারণ (যদি আপনি 6 সংখ্যার যথার্থতা চান তবে এর অর্থ কেবল 3 টি উপলব্ধ অঙ্ক রয়েছে যা এটি 3 এ চাপিয়ে দেয়)।
  • উপসর্গ হ্রাস (মানে আপনার চয়ন করা উপসর্গটি যদি খুব বড় হয় তবে এটিকে আরও উপযুক্ত উপসর্গের দিকে হ্রাস করে)।

কোডটি এখানে পাওয়া যাবে । আপনি এটিকে এভাবে বলেছেন:

public static void main(String[])
{
   int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS;
   String formatted = ValueFormat.format(1234567, settings);
}

আমার এটিও উল্লেখ করা উচিত যে এটি দশমিক সমর্থনটি পরিচালনা করে না, তবে পূর্ণসংখ্যার মানগুলির জন্য খুব দরকারী। উপরের উদাহরণটি আউটপুট হিসাবে "1.23M" প্রদর্শন করবে। আমি সম্ভবত দশমিক সমর্থন যোগ করতে পারতাম, তবে এর পরে খুব বেশি ব্যবহারের মুখোমুখি হতে পারি নি আমি তখন থেকে এটিকে আরও একটি বিগইন্টিজার ধরণের শ্রেণিতে মিশ্রিত করতে পারি যা গণিতের গণনার জন্য সংকুচিত চর [] অ্যারে পরিচালনা করে।


2
আপনি যদি কেবল ইংরেজী ভাষায় কাজ করেন তবে এটি ভাল। আমার পরামর্শটি KM
এমনটি

@rishabhmhjn কিন্তু ... আপনি যে কোনও চিঠির প্রয়োজন তা সংশোধন করার জন্য কেবল এটি টুইট করতে পারবেন না? আপনার ভাগ্য কি তার দোষ? : ও এবং তিনি যা তৈরি করেছেন তা বেশ দুর্দান্ত, যদিও লিঙ্কটি এখনই অনুপলব্ধ বলে মনে হচ্ছে ..
কুম্ভ শক্তি

@ অ্যাকোয়ারিয়াস পাওয়ার সমস্যাটি হ'ল, জাপানি সংখ্যাগুলি মেট্রিক পদ্ধতি অনুসরণ করে না। তাদের সংখ্যা 100 এর জন্য 1,, 1000 এর জন্য 1,, 10000 এর জন্য 1 like এর মতো, তবে এটি 1000,0000 এর জন্য 1 becomes হয়ে যায়। আমার দল জাভাস্ক্রিপ্টে অনুরূপ কিছু নিয়ে কাজ করছিল। আপনি এটিতে
রিশাভহজন

এর জন্য আমার পুরানো কোডটি খুঁজে পেয়েছি তাই আমি এটিকে আবার গিটহাবটিতে আপলোড করেছি। মন্তব্যে লিঙ্কটি আপডেট করা হয়েছে।
জেরেমি ত্রিফিলো

6
public void convert(int s)
{
    System.out.println(NumberFormat.getNumberInstance(Locale.US).format(s));
}

public static void main(String args[])
{
    LocalEx n=new LocalEx();
    n.convert(10000);
}

6

আপনি নীচের সমাধানটিও ব্যবহার করতে পারেন -

public static String getRoundOffValue(double value){

        DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0.00");
        return df.format(value);
}

4

আপনি নিম্নলিখিত কোডটি ব্যবহার করে এক লাইনে পুরো রূপান্তরটি করতে পারেন:

String number = "1000500000.574";
String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number));

ডেসিমালফর্ম্যাট কনস্ট্রাক্টরের শেষ দুটি # চিহ্নও 0 টি হতে পারে। যেভাবেই কাজ করে।


3

প্রথম উত্তরটি খুব ভালভাবে কাজ করে তবে জেরো / 0 এর জন্য এটি .00 হিসাবে ফর্ম্যাট করবে

সুতরাং #, # # 0.00 ফর্ম্যাটটি আমার পক্ষে ভাল কাজ করছে। উত্পাদন সিস্টেমে মোতায়েনের আগে সর্বদা 0/100 / 2334.30 এবং নেতিবাচক সংখ্যাগুলির মতো বিভিন্ন নম্বর পরীক্ষা করুন।


3

সেখানে যাওয়ার সহজ উপায় এখানে:

String number = "10987655.876";
double result = Double.parseDouble(number);
System.out.println(String.format("%,.2f",result)); 

আউটপুট: 10,987,655.88

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.