.NET String.Format () අංකයක් සඳහා ස්ථාන දහස් ගණනක කොමාව එක් කිරීමට


872

අංකයක් සඳහා දහස් ගණනක් ස්ථානයේ කොමාව එක් කිරීමට මට අවශ්‍යය.

String.Format()?

Answers:


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

43
String.Format("{0:#,##0}", 1234);දශම ස්ථාන නොමැතිව ද ක්‍රියා කරයි.
ග්‍රෙග් බ්‍රේ

12
අංකයේ ඇති නමුත් දශම සංඛ්‍යා තරම් සංඛ්‍යාවක් සහිත “එන්” පිරිවිතර ප්‍රතිවර්තනය කරන්නේ කෙසේද?
ස්ටීවන් ඩ්‍රූ

56
@Justin: අනුව msdn.microsoft.com/en-us/library/0c899ak8.aspx , එම ',' ( '.' හා) නිවැරදි දේශීයකරණය චරිත වෙනුවට ඇත.
රොජර් ලිප්ස්කොම්බ්

Og රොජර්ලිප්ස්කොම්බ් මට එය වැටහී නොතිබුණි
ජස්ටින්

6
@VVVV - එවිට ඔබ බොහෝ විට දී පසුකර string වෙනුවට ක අංකය . ඔබට නූලක් තිබේ නම්, ඔබ මුලින්ම පාවෙන හෝ දෙගුණයක් බවට පරිවර්තනය කළ යුතුය. උත්සාහ කරන්නstring.Format("{0:n0}", Double.Parse(yourValue));
මෙවලම් සාදන්නා ස්ටීව්

396

මෙය සරලම ක්‍රමය බව මට පෙනී ගියේය:

myInteger.ToString("N0")

1
;, 123456789 (: ඔබ ද string.Format ( "මෙන්න කොමා සමග සමහර අංකය, සහ කිසිදු දශම, {N0 0} වේ" දී මෙන්, string.Format එය භාවිතා කළ හැකිය
දාන් Morphis

16
එය myInteger.ToString ("N0") නොවිය යුතුද ... string.tostring වැඩ කරන්නේ යැයි මම නොසිතමි.
ටේලර් බ්‍රවුන්

1
මම දන්නවා දැන් අවුරුදු 5 ක් ගතවී ඇති නමුත් ස්තූතියි! එය අංක> අක්ෂර 4 සහ <අකුරු 4 සඳහා ක්‍රියා කරයි.
AskYous

S ඇස්කියුස් - හොඳයි, එය අක්ෂර 4 ක් සඳහාද ක්‍රියා කරයි .. එය ඕනෑම දිගක් සඳහා ක්‍රියා කරයි.
බෘට්ස් වේම්බ්

මෙය ක්‍රියාත්මක වන නමුත් කලාපීය සැකසුම් මත එය වෙනස් වෙමින් පවතී
සාලියසාර්

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

28
ජාත්‍යන්තරකරණ දෘෂ්ටි කෝණයකින් මෙම විසඳුම හොඳ නැත - වෙනත් සංස්කෘතීන් ,දහස් ගණනක් බෙදුම්කරුවෙකු ලෙස හැර වෙනත් අක්ෂර භාවිතා කරයි , උදාහරණයක් ලෙස අවකාශයක් හෝ පවා ..
ජස්ටින්

6
වැඩ ස්තූතියි + 1. දීර් extended කර ඇති නිසා 2 dp අංකය දක්වා පෙන්වයි. ToString ("#, ## 0. ##")
කකුළුවන් බාල්දිය

8
Ac මැක්සිග්ලර් එය ඇත්ත වශයෙන්ම සත්‍ය නොවේ, ඉහත පිළිතුර පිළිබඳ රොජර් ලිප්ස්කොම්බ්ගේ අදහස බලන්න: String.Format දේශීයකරණය ස්වයංක්‍රීයව අදාළ වේ.
ඩෑන් බෙචර්ඩ්

10
Ac මැක්සිග්ලර් එය එසේ වුවත්, මෙම කේතය සෑම විටම කොමාව මුද්‍රණය නොකරයි . සංස්කෘතිය කොමාව අපේක්ෂා කරන එකක් වූ විට පමණි (උදා: එන්-එක්සත් ජනපදය හෝ වෙනස් නොවන). සංස්කෘතිය වෙනත් බෙදුම්කරුවෙකු අපේක්ෂා කරන එකක් නම් (උදා ) .NET ස්වයංක්‍රීයව කොමාව එම බෙදුම්කරු සමඟ ප්‍රතිස්ථාපනය කරයි. නැවතත්, රොජර් විසින් පළ කරන ලද සබැඳිය කියවීමට මම ඔබෙන් ඉල්ලා සිටිමි. .
ඩෑන් බෙචර්ඩ්

4
Ac මැක්සිග්ලර් ජස්ටින්ගේ ප්‍රකාශය තවමත් නිවැරදියි, ඔබ සංස්කෘතිය එක්සත් ජනපදයට පැහැදිලිවම බල නොකරන්නේ නම් එය දේශීය යන්ත්‍රයෙන් සංස්කෘතික සැකසුම් උරුම කර ගනු ඇත. මගේ අවබෝධය නම් ඉහත කේතය සම්පාදනය කිරීමෙන් පසුව විවිධ සංස්කෘතීන් සහිත යන්ත්‍ර දෙකක (විවිධ සංඛ්‍යා බෙදුම්කරුවන් සමඟ) ධාවනය කිරීමෙන් විවිධ ප්‍රති .ල ලැබෙනු ඇති බවයි. ඔබට එය සැමවිටම කොමාව නිපදවීමට අවශ්‍ය නම්, ඔබ කොමාව භාවිතා කරන සංස්කෘතියක් පැහැදිලිවම සැකසිය යුතුය (උදා: ආක්‍රමණික).
ඩෑන් බෙචර්ඩ්

99

ඔබට සංස්කෘතිය විශේෂිත වීමට අවශ්‍ය නම්, ඔබට මෙය උත්සාහ කිරීමට අවශ්‍ය විය හැකිය:

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

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

සටහන: සමහර සංස්කෘතීන් පරිස්සම් ,නොවී දශම යන්නෙන් අදහස් .කරයි.


80

සම්මත ආකෘති, ඒවාට අදාළ ප්‍රතිදානයන් සමඟ,

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 නූල් ආකෘතියේ තේරුමයි.
user420667

44

මෙය හොඳම ආකෘතියයි. එම සියලු අවස්ථාවන්හිදී ක්‍රියා කරයි:

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
මට තිත් දහසක් බෙදුම්කරු ලෙසත් කොමාව දශම පරිමිතිය ලෙසත් අවශ්‍ය නම් කුමක් කළ යුතුද?
FrenkyB

ඉහළට ඔසවා ඇත්තේ එය 12,314.0 (n1 ආකෘතිය වැනි) නොපෙන්වන නමුත් 12,314 :)
NDUF

35

වඩාත්ම ඡන්දය දුන් පිළිතුර විශිෂ්ට වූ අතර එය වසර 7 ක් පමණ ප්‍රයෝජනවත් විය. සී # 6.0 හඳුන්වාදීමත් සමඟ විශේෂයෙන් ස්ට්‍රිං ඉන්ටර්පෝලේෂන් සමඟ ඉල්ලුම් කර ඇති දේ කිරීමට ක්‍රමයක් සහ IMO ආරක්ෂිතයි 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) වෙනස් වී නැත. අළුත් දේ පිළිබඳ සම්පූර්ණ අංගයක් සඳහා, ඔබට මෙම පිටුවට යා හැකිය .


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

එමඟින් ඔබට අදාළ ස්ථානවල කොමාව ලබා දෙනු ඇත.


10
": N" ක්‍රමය වඩා හොඳ වන්නේ එය පරිශීලකයාගේ ස්ථානයට ගරු කළ යුතු බැවිනි.
ටෝලාක්

12
මෙය සත්යයකි, නමුත් පරිශීලකයාගේ ස්ථානයට ගරු කරන බැවින් දහසක් ස්ථානයේ ඔබට කොමාව ලබා දීම සහතික නොවේ.
ස්ටීවන් රයිටන්

2
ඔබ වෙත ආපසු: එය සත්‍යයකි, නමුත් එය කොමා දහස් ගණනක් බෙදුම්කරු ලෙස භාවිතා කරන බැවින් පරිශීලකයාගේ ස්ථානයට ගරු කිරීම සහතික නොවේ. (උදාහරණයක් ලෙස, පෘතුගාලයේ කොමා වෙනුවට දශම වෙන්කර ඇත.)
ANeves SE නපුරු සිතන

1
ඔබට පසුව අගයන් බලාත්මක කිරීමට අවශ්‍ය නම්. ඔබට # වෙනුවට 0 ආදේශ කළ යුතුය. msdn.microsoft.com/en-us/library/0c899ak8(v=vs.110).aspx : ශුන්‍යය ශුන්‍යය අනුරූප අංකයකින් ආදේශ කරන්නේ නම්; එසේ නොමැති නම්, ප්‍රති # ල තීරයේ ශුන්‍යය දිස්වන අතර “#” සංකේතය එකක් තිබේ නම් අනුරූප අංකයෙන් ප්‍රතිස්ථාපනය වේ; එසේ නොමැතිනම් ප්‍රති result ල තීරුවේ කිසිදු ඉලක්කම් නොපෙන්වයි.
ක්ලැරිස් බුවර්

මෙම ක්‍රමය මගේ අවශ්‍යතාවයට සරිලන පරිදි ක්‍රියාත්මක විය, Int32.ToString ක්‍රමය පිළිබඳ මූලික පිටුව එය භාවිතා කරන මූලික ස්ථානයක් වනු ඇත msdn.microsoft.com/en-us/library/8wch342y.aspx මෙම විශේෂයට බෙහෙවින් උපකාරී නොවේ යෙදුම එක්කෝ
stackuser83

30

මේ තරම් සරලයි:

float num = 23658; // for example 
num = num.ToString("N0"); // Returns 23,658

වැඩි විස්තර මෙහි ඇත


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")

ප්‍රති result ලය "29,255.0"

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

හෝ

29255.0.ToString("N2")

ප්‍රති result ලය "29,255.00"


හොඳ පිළිතුරක් නමුත් 29.255,00 ගැන කුමක් කිව හැකිද?
රොක්සිප්‍රෝ

@ Roxy'Pro පෙදෙසි / සංස්කෘතිය වෙනස් කරන්න?
මාර්ටන් බොඩෙව්ස්

මම = "N1" වැනි අනුරූප ලිපිය පවතී කියලා, ඒ වගේ "F1" හෝ smth) නමුත් සංස්කෘතිය definatelly කටයුතු කරන chaning .. @MaartenBodewes
Roxy'Pro

12

සරලයි. String.Format වෙනුවට string interpolation භාවිතා කිරීම

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

හෝ ඔබේ විචල්‍යතාවය භාවිතා කිරීම

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

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

3
හෝ Console.WriteLine ("{0: #, #}", අංක); ඔබට එය මුද්‍රණය කිරීමට අවශ්‍ය නම්. නමුත් string.Format (...) වඩාත් ප්‍රයෝජනවත් යැයි මම සිතමි.
Indy9000

9

ඔබ ආකෘතිකරණය කරන අගය සංඛ්‍යාත්මක විය යුතු බව සලකන්න. එය අංකයක තන්තු නිරූපණයක් ගන්නා බවක් නොපෙනෙන අතර ආකෘතිය කොමාව සමඟ ඇත.


9

උදාහරණයක් ලෙස String.Format("{0:0,0}", 1);01 ආපසු එයි, මට වලංගු නොවේ

මෙය මට වැඩ කරයි

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

නිමැවුම් 19,950,000


9

සී # 7.1 (සමහර විට මීට පෙර?) මෙය නූල් අන්තර් මැදිහත්වීමකින් යුක්ත විය හැකි තරම් පහසු හා ලස්සන පෙනුමක් ඇති කරයි:

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

වාව් මෙය ඇත්තෙන්ම පිළිවෙලට හා පිරිසිදුයි, c # ට එය ඇති බව දැන සිටියේ නැත, ස්තූතියි!
coster128


3

සංඛ්‍යා හැඩගස්වා ගැනීමට සහ අපේක්ෂිත දශම ස්ථානවල විකල්ප ලෙස සමත් වීමට ඔබට මෙවැනි ශ්‍රිතයක් භාවිතා කළ හැකිය. දශම ස්ථාන නිශ්චිතව දක්වා නොමැති නම් එය දශම ස්ථාන දෙකක් භාවිතා කරයි.

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

මම දශම භාවිතා කරන නමුත් ඔබට වර්ගය වෙනත් ඕනෑම ආකාරයකට වෙනස් කිරීමට හෝ නිර්නාමික වස්තුවක් භාවිතා කළ හැකිය. Negative ණ දශම ස්ථාන අගයන් සඳහා දෝෂ පරීක්ෂා කිරීමක් ද ඔබට එකතු කළ හැකිය.


-2

සංස්කෘතීන් සහ විභව හැඩතල ගැන්වීමේ ගැටළු පිළිබඳව මා තවදුරටත් කරදර නොවීමට භාවිතා කළ ක්‍රමය නම්, මම එය මුදල් ලෙස සංයුති කර මුදල් සංකේතය ඉවත් කර ගැනීමයි.

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

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

6
මෙම කේතය සංස්කෘතියෙන් ස්වාධීන නොවේ - එය කේතය ධාවනය කරන යන්ත්‍රය මත සකසා ඇති ඕනෑම පෙරනිමි සංස්කෘතියක් භාවිතා කරයි. මෙම සංස්කෘතිය ඔවුන්ගේ මුදල් සංකේත ආරම්භයේ (උදා fr-FR) වෙනුවට සංඛ්‍යාවේ අවසානයේ තැන්පත් කරන හෝ මුදල් (උදා da-DK) දැක්වීමට අක්ෂර එකකට වඩා භාවිතා කරන හෝ කොමා භාවිතා කරමින් දහස් ගණනක් වෙන් නොකරන (උදා: බොහෝ) යුරෝපයේ ප්‍රධාන භූමියේ).
raveturned

-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));

එක්සත් ජනපද ස්ථානය OUTPUT: $ 9,999,999.00

ජර්මානු ස්ථාන ප්‍රතිදානය

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

නිමැවුම්: 9.999.999,00 €

ඉන්දියානු ස්ථාන ප්‍රතිදානය

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

නිමැවුම්: රු .9,999,999.00

එස්තෝනියානු ස්ථාන ප්‍රතිදානය

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

නිමැවුම්: 9 999 999 €

විවිධ නිමැවුම් වලින් ඔබට දැකිය හැකි පරිදි, බෙදුම්කරු කොමාව හෝ තිතක් හෝ අවකාශයක් වීම ගැන කරදර විය යුතු නැත. ඔබට i18n ප්‍රමිතීන්ට අනුව ආකෘතිකරණය කළ හැකිය


1
ඔබ විචල්‍යය භාවිතා කළේ කොහෙන්ද locale ??
ස්මිත්

නිවැරදිව හඳුනාගෙන තිබේ නම්, මුදල් උදාහරණය ලබා ගැනීමේදී එය භාවිතා කිරීම අනාරක්ෂිතද: NumberFormat fmt = NumberFormat.getCurrencyInstance (locale); කේතය නිවැරදි කළා, ස්තූතියි!
අනිරුද්

3
ඔබ ටැග් පරීක්ෂා කර තිබේද? ප්‍රශ්නය C # ජාවා ගැන නොවේ!
සාලාර්

-3

ඔබට එය DataGridview හි පෙන්වීමට අවශ්‍ය නම්, ඔබ එහි වර්ගය වෙනස් කළ යුතුය, මන්ද පෙරනිමිය String වන අතර ඔබ එය දශමයට වෙනස් කරන බැවින් එය පාවෙන ලක්ෂ්‍යය සහිත අංකයක් ලෙස සලකයි

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.