.NET স্ট্রিং. ফর্ম্যাট () একটি সংখ্যার জন্য কয়েক হাজার জায়গায় কমা যোগ করতে


852

আমি একটি সংখ্যার জন্য কয়েক হাজার জায়গায় একটি কমা যোগ করতে চাই।

String.Format()?

উত্তর:


1216
String.Format("{0:n}", 1234);  // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876

39
String.Format("{0:#,##0}", 1234);কোন দশমিক জায়গা নিয়েও কাজ করে।
গ্রেগ ব্রে

9
আমি কীভাবে "এন" নির্দিষ্টকারীর প্রতিলিপি তৈরি করতে পারি তবে সংখ্যায় উপস্থিত দশমিক সংখ্যা সহ?
স্টিফেন ড্রু

56
@Justin: মতে msdn.microsoft.com/en-us/library/0c899ak8.aspx , ',' ( '।' এবং) সঠিক স্থানীয় অক্ষর দিয়ে প্রতিস্থাপিত করা হয়।
রজার লিপসক্বে

@ রজারলিপস কম্বে আমি বুঝতে পারি নি যে
জাস্টিন

6
@ ভিভিভিভি - তারপরে আপনি সম্ভবত একটি সংখ্যার পরিবর্তে একটি স্ট্রিংয়ে যাচ্ছেন । আপনার যদি স্ট্রিং থাকে তবে আপনাকে প্রথমে ভাসা বা ডাবল রূপান্তর করতে হবে। চেষ্টা করুনstring.Format("{0:n0}", Double.Parse(yourValue));
টুলমেকারস্টেভ

378

আমি এটি সবচেয়ে সহজ উপায় হিসাবে খুঁজে পেয়েছি:

myInteger.ToString("N0")

1
; 123456789 (: আপনি string.Format সঙ্গে এটি ব্যবহার করতে পারেন string.Format হিসাবে, ( "এখানে কমা দিয়ে কিছু সংখ্যা, এবং কোন দশমিক, {N0 0} হল"
ড্যান Morphis

16
এটি myInteger.ToString ("N0") হওয়া উচিত নয় ... স্ট্রিং.টাস্ট্রিং আমার মনে হয় কাজ করবে না।
টেলর ব্রাউন

1
আমি জানি এখন 5 বছর কেটে গেছে, তবে ধন্যবাদ! এটি সংখ্যা> 4 টি অক্ষর এবং <4 টি অক্ষরের জন্য কাজ করে।
জিজ্ঞাসা করুন

@ অ্যাসওয়িউস - ঠিক আছে, এটি 4 টি চরিত্রের জন্যও কাজ করে .. এটি আরও বলুন যে এটি যে কোনও দৈর্ঘ্যের জন্য কাজ করে।
ব্রুটস ওয়েম্ব

এটি কাজ করছে তবে এটি আঞ্চলিক সেটিংসে পরিবর্তিত হচ্ছে
সুল্যসার ২ '

149
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000

27
আন্তর্জাতিকীকরণের দৃষ্টিকোণ থেকে এই সমাধানটি ভাল নয় - অন্যান্য সংস্কৃতি ,হাজার হাজার বিভাজক হিসাবে পৃথক অক্ষর ব্যবহার করে , উদাহরণস্বরূপ কোনও স্থান বা এমনকি .
জাস্টিন

6
ধন্যবাদ ধন্যবাদ + ১. 2 ডিপি সংখ্যা পর্যন্ত প্রসারিত হয়েছে। টুস্ট্রিং ("#, ## 0। ##")
ক্র্যাব বালতি

8
@ ম্যাকসিগলার এটি সত্য নয়, উপরের উত্তরে রজার লিপসকোবের মন্তব্য দেখুন: স্ট্রিং.ফর্ম্যাটটি স্বয়ংক্রিয়ভাবে স্থানীয়করণ প্রয়োগ করবে।
ড্যান বেচার্ড

10
@ ম্যাকসিগলার এই জিনিসটি যদিও এই কোডটি সর্বদা কমা মুদ্রণ করে না । কেবল যখন সংস্কৃতিটি কমাগুলি প্রত্যাশা করে (যেমন এন-মার্কিন বা আক্রমণকারী) or সংস্কৃতি যদি এমন এক হয় যা অন্য বিভাজকের (যেমন ) প্রত্যাশা করে,। নেট স্বয়ংক্রিয়ভাবে সেই বিভাজকের সাথে কমাটি প্রতিস্থাপন করবে। আবার, আমি আপনাকে রাজার দ্বারা পোস্ট করা লিঙ্কটি পড়ার জন্য অনুরোধ জানাই যদি আপনি এখনও বুঝতে না পারেন তবে এটি কেন। .
ড্যান বেচার্ড

4
@ ম্যাকসিগ্লার জাস্টিনের মন্তব্য এখনও ঠিক আছে যে আপনি যদি স্পষ্টভাবে সংস্কৃতিটিকে মার্কিন যুক্তরাষ্ট্রে বাধ্য না করেন তবে এটি স্থানীয় মেশিন থেকে সংস্কৃতি সেটিংসের অধিকারী হবে। আমার বোধগম্যতা হল যে উপরের কোডটি সংকলন করুন, তারপরে এটিকে দুটি সংস্কৃতিতে (বিভিন্ন সংখ্যা বিভাজক সহ) দুটি মেশিনে চালনা করা বিভিন্ন ফলাফল আনতে পারে। আপনি যদি এটি সর্বদা কমা তৈরি করতে চান তবে আপনাকে স্পষ্টভাবে একটি সংস্কৃতি সেট করতে হবে যা কমা ব্যবহার করে (যেমন: আক্রমণকারী)।
ড্যান বেচার্ড

98

আপনি যদি সংস্কৃতি নির্দিষ্ট করতে চান তবে আপনি এটি চেষ্টা করতে পারেন:

(19950000.0).ToString("N",new CultureInfo("en-US")) = 19,950,000.00

(19950000.0).ToString("N",new CultureInfo("is-IS")) = 19.950.000,00

দ্রষ্টব্য: কিছু সংস্কৃতি সতর্কতার ,চেয়ে দশমিক বোঝাতে ব্যবহার করে .


77

স্ট্যান্ডার্ড ফর্ম্যাটগুলি, তাদের সম্পর্কিত আউটপুট সহ,

Console.WriteLine("Standard Numeric Format Specifiers");
String s = String.Format("(C) Currency: . . . . . . . . {0:C}\n" +
                    "(D) Decimal:. . . . . . . . . {0:D}\n" +
                    "(E) Scientific: . . . . . . . {1:E}\n" +
                    "(F) Fixed point:. . . . . . . {1:F}\n" +
                    "(G) General:. . . . . . . . . {0:G}\n" +
                    "    (default):. . . . . . . . {0} (default = 'G')\n" +
                    "(N) Number: . . . . . . . . . {0:N}\n" +
                    "(P) Percent:. . . . . . . . . {1:P}\n" +
                    "(R) Round-trip: . . . . . . . {1:R}\n" +
                    "(X) Hexadecimal:. . . . . . . {0:X}\n",
                    - 1234, -1234.565F);
Console.WriteLine(s);

উদাহরণ আউটপুট (en-us সংস্কৃতি):

(C) Currency: . . . . . . . . ($1,234.00)
(D) Decimal:. . . . . . . . . -1234
(E) Scientific: . . . . . . . -1.234565E+003
(F) Fixed point:. . . . . . . -1234.57
(G) General:. . . . . . . . . -1234
    (default):. . . . . . . . -1234 (default = 'G')
(N) Number: . . . . . . . . . -1,234.00
(P) Percent:. . . . . . . . . -123,456.50 %
(R) Round-trip: . . . . . . . -1234.565
(X) Hexadecimal:. . . . . . . FFFFFB2E

2
এই উত্তরটি অনেক দরকারী তথ্য প্যাক করেছে। উদাহরণস্বরূপ শেখা আমি এখন দেখছি যে স্ট্রিং ফর্ম্যাটে 0 এবং 1 এর অর্থ কী।
ব্যবহারকারী420667

41

এটি সেরা ফর্ম্যাট। এই সমস্ত ক্ষেত্রে কাজ করে:

String.Format( "{0:#,##0.##}", 0 ); // 0
String.Format( "{0:#,##0.##}", 0.5 ); // 0.5 - some of the formats above fail here. 
String.Format( "{0:#,##0.##}", 12314 ); // 12,314
String.Format( "{0:#,##0.##}", 12314.23123 ); // 12,314.23
String.Format( "{0:#,##0.##}", 12314.2 ); // 12,314.2
String.Format( "{0:#,##0.##}", 1231412314.2 ); // 1,231,412,314.2

1
যদি আমি হাজার বিভাজক এবং দশমিক ডিলিমিটার হিসাবে কমা চাই?
ফ্রেনকিবি

upvated কারণ এটি 12,314.0 (এন 1 ফর্ম্যাটের মতো) প্রদর্শন করে না তবে 12,314 :)
এনডিউএফ

34
String.Format("{0:#,###,###.##}", MyNumber)

এটি আপনাকে সম্পর্কিত পয়েন্টগুলিতে কমা দেবে।


10
": N" পদ্ধতিটি আরও ভাল কারণ এটি ব্যবহারকারীর লোকালকে সম্মান করা উচিত।
টরল্যাক

12
এটি সত্য, তবে এটি আপনাকে হাজার পয়েন্টে কমা দেওয়ার গ্যারান্টিযুক্ত নয় কারণ এটি ব্যবহারকারীর লোকালকে সম্মান করে।
স্টিফেন রাইটন

2
ঠিক আপনার পিছনে: এটি সত্য, তবে এটি ব্যবহারকারীর লোকালকে সম্মান করার গ্যারান্টিযুক্ত নয় কারণ এটি হাজার হাজার বিভাজক হিসাবে কমা ব্যবহার করে। (উদাহরণস্বরূপ, পর্তুগালে কমা পরিবর্তে দশমিক বিভাজক))
এভিনিস

1
আপনি যদি মানগুলির পরে প্রয়োগ করতে চান। আপনাকে একটি 0 এর সাথে প্রতিস্থাপন করতে হবে # এমএসডিএন.ইমিক্রোসফটিও /en-us/library/0c899ak8(v=vs.110).aspx : শূন্যটি যদি উপস্থিত থাকে তবে সংশ্লিষ্ট অঙ্কের সাথে শূন্যকে প্রতিস্থাপন করবে; অন্যথায়, ফলাফলের স্ট্রিংয়ে শূন্য উপস্থিত হয় যেখানে "#" চিহ্ন উপস্থিত থাকলে সংশ্লিষ্ট অঙ্কের সাথে প্রতিস্থাপন করা হয়; অন্যথায়, ফলাফল স্ট্রিংয়ে কোনও অঙ্ক উপস্থিত হয় না।
ক্লারিস বাউভার

এই পদ্ধতি আমার প্রয়োজন জন্য ঠিক কাজ করেন, Int32.ToString পদ্ধতি সম্পর্কে MSDN যে পৃষ্ঠাটি একটি প্রাথমিক জায়গা এটি ব্যবহৃত হয়ে যান msdn.microsoft.com/en-us/library/8wch342y.aspx এই বিশেষ জন্য খুবই সহায়ক নয় আবেদন হয়
stackuser83

33

সর্বাধিক ভোট দেওয়া উত্তর দুর্দান্ত ছিল এবং প্রায় 7 বছর ধরে এটি সহায়ক। সি # .0.০ এর প্রবর্তন এবং বিশেষত স্ট্রিং ইন্টারপোলেশনটি খুব সুন্দর এবং আইএমও নিরাপদ, যা বলা হয়েছে তা করার উপায় to add commas in thousands place for a number:

var i = 5222000;
var s = $"{i:n} is the number"; // results to > 5,222,000.00 is the number
s = $"{i:n0} has no decimal"; // results to > 5,222,000 has no decimal

যেখানে i স্থানধারকের (যেমন {0}) পরিবর্তে ভেরিয়েবলটি রাখা হয় । সুতরাং কোন জিনিস কোন অবস্থানে যায় তা মনে করার দরকার নেই। বিন্যাস (যেমন :n) পরিবর্তন হয়নি। নতুন কীসের সম্পূর্ণ বৈশিষ্ট্যের জন্য আপনি এই পৃষ্ঠায় যেতে পারেন



21

যদি আপনি সংস্কৃতি নির্বিশেষে কোনও "," বিভাজনকারীকে বাধ্য করতে চান (উদাহরণস্বরূপ কোনও ট্রেস বা লগ বার্তায়), নিম্নলিখিত কোডটি কার্যকর হবে এবং আপনি যেটা করছেন ঠিক তার পাশের লোকটিকে বলার অতিরিক্ত সুবিধা রয়েছে।

int integerValue = 19400320; 
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);

সেটগুলি "19,400,320" এ ফর্ম্যাট করা হয়েছে


21

নিম্নলিখিত উদাহরণটি শূন্য স্থানধারক অন্তর্ভুক্ত কাস্টম ফর্ম্যাট স্ট্রিং ব্যবহার করে ফর্ম্যাট করা বেশ কয়েকটি মান প্রদর্শন করে।

String.Format("{0:N1}", 29255.0);

অথবা

29255.0.ToString("N1")

ফলাফল "29,255.0"

String.Format("{0:N2}", 29255.0);

অথবা

29255.0.ToString("N2")

ফলাফল "29,255.00"


সুন্দর উত্তর কিন্তু 29.255,00 সম্পর্কে কি?
রক্সি'প্রো

@ রক্সি'প্রো লোকেল / সংস্কৃতি পরিবর্তন করবেন?
মার্টেন বোদেউইস

@ মার্টেনবোডেউজ আমি ভেবেছিলাম "এন 1", "এফ 1" বা স্মিথ এর মতো চিঠি আছে =) তবে চ্যানিং সংস্কৃতি চূড়ান্তভাবে কাজ করবে ..
রোক্সি'প্রো

11
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));

3
বা কনসোল.ওরাইটলাইন ("{0: #, #}", সংখ্যা); আপনি যদি এটি মুদ্রণ করতে চান। তবে স্ট্রিং.ফরমেট (...) আমার ধারণা বেশি কার্যকর।
Indy9000

11

সরল, স্ট্রিং.ফোরামের পরিবর্তে স্ট্রিং ইন্টারপোলেশন ব্যবহার করা

 $"{12456:n0}"; // 12,456
 $"{12456:n2}"; // 12,456.00

বা আপনার পরিবর্তনশীল ব্যবহার

 double yourVariable = 12456.0;
 $"{yourVariable:n0}"; 
 $"{yourVariable:n2}"; 

9

উদাহরণস্বরূপ String.Format("{0:0,0}", 1);01 রিটার্ন দেয়, আমার জন্য বৈধ নয়

এটি আমার পক্ষে কাজ করে

19950000.ToString("#,#", CultureInfo.InvariantCulture));

আউটপুট 19,950,000


8

মনে রাখবেন যে আপনি যে মানটি ফর্ম্যাট করছেন তা সংখ্যাটি হওয়া উচিত। দেখে মনে হচ্ছে না এটি কোনও সংখ্যার একটি স্ট্রিং উপস্থাপনা নেবে এবং ফর্ম্যাটটি কমা সহ রয়েছে।



5

সি # .1.১ (সম্ভবত আগে?) স্ট্রিং ইন্টারপোলেশন সহ এটিকে যতটা সহজ এবং সুন্দর দেখাবে তেমন করে তোলে:

var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";

3

আপনি সংখ্যার ফর্ম্যাট করতে এই জাতীয় ফাংশন ব্যবহার করতে পারেন এবং পছন্দসই দশমিক জায়গায় pass দশমিক স্থান নির্দিষ্ট না করা থাকলে এটি দুটি দশমিক স্থান ব্যবহার করবে।

    public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
    {
        return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
    }

আমি দশমিক ব্যবহার করি তবে আপনি টাইপটি অন্য কোনওটিতে পরিবর্তন করতে পারেন বা কোনও বেনামে অবজেক্ট ব্যবহার করতে পারেন। আপনি নেতিবাচক দশমিক স্থান মানের জন্য ত্রুটি পরীক্ষা করতে যোগ করতে পারেন।


-2

সংস্কৃতি এবং সম্ভাব্য বিন্যাস সম্পর্কিত সমস্যাগুলির জন্য আমি যে পদ্ধতিতে আর চিন্তার চিন্তা করতাম না তা হ'ল আমি এটিকে মুদ্রা হিসাবে ফর্ম্যাট করেছি এবং পরে মুদ্রার প্রতীকটি বের করেছি।

if (decimal.TryParse(tblCell, out result))

{
  formattedValue = result.ToString("C").Substring(1);
}

6
এই কোডটি সংস্কৃতি স্বতন্ত্র নয় - কোড চলমান মেশিনে যা কিছু ডিফল্ট সংস্কৃতি সেট করা আছে এটি ব্যবহার করবে। এটি অনাকাঙ্ক্ষিত আউটপুট তৈরি করতে পারে যেখানে সংস্কৃতিটি তাদের মুদ্রার চিহ্নগুলি শুরু (উদাহরণস্বরূপ fr-FR) এর চেয়ে সংখ্যার শেষে রাখে বা মুদ্রা (উদাহরণস্বরূপ da-DK) বোঝাতে একাধিক অক্ষর ব্যবহার করে বা হাজার হাজার কমা ব্যবহার করে পৃথক করে না (যেমন সর্বাধিক উদাহরণস্বরূপ) মূল ভূখণ্ডের ইউরোপের)।
২১:০৮ এ রাভথার্নড হয়েছে'১২

-2

নীচে জাভাতে একটি ভাল সমাধান দেওয়া হয়!

NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));

বা আরও শক্তিশালী উপায়ে আপনি কোনও নির্দিষ্ট স্থানের লোকেল পেতে চাইতে পারেন, তারপরে নীচের মত ব্যবহার করুন:

int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));

ইউএস লোকেল আউটপুট: $ 9,999,999.00

জার্মান লোকাল আউটপুট

Locale locale = new Locale("de", "DE");

আউটপুট: 9.999.999,00 €

ভারতীয় লোকাল আউটপুট

Locale locale = new Locale("de", "DE");

আউটপুট: 9,999,999.00 টাকা .00

এস্তোনীয় লোকালে আউটপুট

Locale locale = new Locale("et", "EE");

আউটপুট: 9 999 999 €

আপনি বিভিন্ন আউটপুটগুলিতে দেখতে পাচ্ছেন যে আপনাকে বিভাজকটি কমা বা বিন্দু বা এমনকি স্পেস হওয়ার বিষয়ে চিন্তা করতে হবে না আপনি আই 18n মান অনুসারে নম্বরটি ফর্ম্যাট করতে পারবেন


1
আপনি ভেরিয়েবলটি কোথায় ব্যবহার করেছেন locale ??
স্মিথ

ভালভাবে চিহ্নিত করা হয়েছে, মুদ্রার উদাহরণ পাওয়ার সময় এটি কী ব্যবহার করা যায় তা যেমন: নাম্বার ফর্ম্যাট এফএমটি = নাম্বার ফর্ম্যাট.সেটিকেন্সিআইস্ট্যান্স (স্থানীয়); কোড সংশোধন, ধন্যবাদ!
অনিরুধ

3
আপনি ট্যাগ চেক করেছেন? প্রশ্নটি সি # জাভা সম্পর্কে নয়!
সালার

-3

আপনি যদি এটি ডেটাগ্রিডভিউতে দেখাতে চান তবে আপনার প্রকারটি পরিবর্তন করা উচিত, কারণ ডিফল্টটি স্ট্রিং এবং যেহেতু আপনি এটি দশমিক হিসাবে পরিবর্তন করেন এটি ভাসমান পয়েন্ট সহ সংখ্যা হিসাবে বিবেচনা করে

Dim dt As DataTable = New DataTable
dt.Columns.Add("col1", GetType(Decimal))
dt.Rows.Add(1)
dt.Rows.Add(10)
dt.Rows.Add(2)

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