.NET String.Format () : 숫자에 대해 천 자리에 쉼표를 추가합니다.
숫자에 대해 천 자리에 쉼표를 추가하고 싶습니다. String.Format()
?
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
나는 이것이 가장 간단한 방법이라는 것을 알았습니다.
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
특정 문화를 원한다면 다음을 시도해 볼 수 있습니다.
(19950000.0).ToString("N",new CultureInfo("en-US"))
= 19,950,000.00
(19950000.0).ToString("N",new CultureInfo("is-IS"))
= 19.950.000,00
참고 : 일부 문화권에서는 ,
10 진수를 의미하기 .
때문에주의해야합니다.
관련 출력과 함께 표준 형식,
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
이것이 가장 좋은 형식입니다. 모든 경우에서 작동합니다.
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
String.Format("{0:#,###,###.##}", MyNumber)
그러면 관련 지점에 쉼표가 표시됩니다.
가장 많이 투표 한 답변은 훌륭했고 약 7 년 동안 도움이되었습니다. C # 6.0과 특히 String Interpolation이 도입됨에 따라 더 깔끔하고 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
Where the variable i
is put in place of the placeholder (i.e. {0}
). So there's no need to remember which object goes to which position. The formatting (i.e. :n
) hasn't changed. For a complete feature of what's new, you may go to this page.
just simple as this:
float num = 23658; // for example
num = num.ToString("N0"); // Returns 23,658
more info is in Here
If you wish to force a "," separator regardless of culture (for example in a trace or log message), the following code will work and has the added benefit of telling the next guy who stumbles across it exactly what you are doing.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
sets formatted to "19,400,320"
The following example displays several values that are formatted by using custom format strings that include zero placeholders.
String.Format("{0:N1}", 29255.0);
Or
29255.0.ToString("N1")
result "29,255.0"
String.Format("{0:N2}", 29255.0);
Or
29255.0.ToString("N2")
result "29,255.00"
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
For example String.Format("{0:0,0}", 1);
returns 01, for me is not valid
This works for me
19950000.ToString("#,#", CultureInfo.InvariantCulture));
output 19,950,000
Note that the value that you're formatting should be numeric. It doesn't look like it will take a string representation of a number and format is with commas.
Simpler, using string interpolation instead of String.Format
$"{12456:n0}"; // 12,456
$"{12456:n2}"; // 12,456.00
or using yourVariable
double yourVariable = 12456.0;
$"{yourVariable:n0}";
$"{yourVariable:n2}";
String.Format("0,###.###"); also works with decimal places
You can use a function such as this to format numbers and optionally pass in the desired decimal places. If decimal places are not specified it will use two decimal places.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
I use decimal but you can change the type to any other or use an anonymous object. You could also add error checking for negative decimal place values.
C# 7.1 (perhaps earlier?) makes this as easy and nice-looking as it should be, with string interpolation:
var jackpot = 1000000;
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
The method I used to not worry anymore about cultures and potential formatting issues is that I formatted it as currency and took out the currency symbol afterwards.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
Below is a good solution in Java though!
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(n));
or for a more robust way you may want to get the locale of a particular place, then use as below:
int n=9999999;
Locale locale = new Locale("en", "US");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(n));
US Locale OUTPUT: $9,999,999.00
German Locale output
Locale locale = new Locale("de", "DE");
OUTPUT: 9.999.999,00 €
Indian Locale output
Locale locale = new Locale("de", "DE");
OUTPUT: Rs.9,999,999.00
Estonian Locale output
Locale locale = new Locale("et", "EE");
OUTPUT: 9 999 999 €
As you can see in different outputs you don't have to worry about the separator being a comma or dot or even space you can get the number formatted according to the i18n standards
If you want to show it in DataGridview , you should change its type , because default is String and since you change it to decimal it considers as Number with floating point
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
'developer tip' 카테고리의 다른 글
CSS 클래스가 하나 이상의 다른 클래스를 상속 할 수 있습니까? (0) | 2020.09.30 |
---|---|
javadoc에서 메소드를 참조하는 방법은 무엇입니까? (0) | 2020.09.29 |
Android Studio에 라이브러리 프로젝트를 어떻게 추가합니까? (0) | 2020.09.29 |
목록 무작위 화 (0) | 2020.09.29 |
AngularJS 컨트롤러에서보기에 HTML 삽입 (0) | 2020.09.29 |