.NET 문자열.형식() - 숫자에 대해 수천 개의 위치에 쉼표를 추가합니다.
나는 숫자에 대해 수천 자리에 쉼표를 추가하고 싶습니다.
그럴 것이다String.Format()
올바른 길을 택해야 합니까?어떤 형식을 사용해야 합니까?
$"{1234:n}"; // Output: 1,234.00
$"{1234:n0}"; // 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
인도 문화:(19950000.0).ToString("N",new CultureInfo("hi-IN"))
= 1,99,50,000.00
참고: 일부 문화권에서는,
보다 소수를 의미합니다..
그러니까 조심하세요.
표준 형식 및 관련 출력
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);
출력 예(엔어스 배양):
(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
가장 많이 투표된 답변은 훌륭했고 약 7년 동안 도움이 되었습니다.C# 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
) 변경되지 않았습니다.새로운 기능에 대한 전체 기능을 보려면 이 페이지로 이동하십시오.
이처럼 단순합니다.
float num = 23658; // for example
num = num.ToString("N0"); // Returns 23,658
자세한 내용은 여기에 있습니다.
String.Format("{0:#,###,###.##}", MyNumber)
그러면 관련 지점에 쉼표가 표시됩니다.
다음 예제에서는 자리 표시자가 0인 사용자 지정 형식 문자열을 사용하여 형식을 지정한 여러 값을 표시합니다.
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"
문화(예: 추적 또는 로그 메시지)에 관계없이 "" 구분자를 강제로 지정하려면 다음 코드가 작동하고 다음 코드를 건너는 사용자에게 정확히 무엇을 하고 있는지 알려주는 추가적인 이점이 있습니다.
int integerValue = 19400320;
string formatted = string.Format(CultureInfo.InvariantCulture, "{0:N0}", integerValue);
"19,400,320"으로 포맷된 세트
C# 7.1(아마도 이전?)을 사용하면 문자열 보간을 사용하여 쉽고 보기 좋게 만들 수 있습니다.
var jackpot = 1_000_000; // underscore separators in numeric literals also available since C# 7.0
var niceNumberString = $"Jackpot is {jackpot:n}";
var niceMoneyString = $"Jackpot is {jackpot:C}";
문자열 대신 문자열 보간을 사용하는 것이 더 간단합니다.포맷
$"{12456:n0}"; // 12,456
$"{12456:n2}"; // 12,456.00
또는 변수 사용
double yourVariable = 12456.0;
$"{yourVariable:n0}";
$"{yourVariable:n2}";
int num = 98765432;
Console.WriteLine(string.Format("{0:#,#}", num));
예를들면String.Format("{0:0,0}", 1);
01을 반환합니다. 저는 유효하지 않습니다.
이것은 나에게 효과가 있습니다.
19950000.ToString("#,#", CultureInfo.InvariantCulture));
출력 19,950,000
형식을 지정할 값은 숫자여야 합니다.숫자를 문자열로 표시하지 않고 쉼표로 형식을 지정합니다.
String.Format("0,###.###"); also works with decimal places
이와 같은 기능을 사용하여 숫자 형식을 지정하고 원하는 소수점 이하로 전달할 수 있습니다.소수 자릿수가 지정되지 않은 경우 소수 자릿수 두 개를 사용합니다.
public static string formatNumber(decimal valueIn=0, int decimalPlaces=2)
{
return string.Format("{0:n" + decimalPlaces.ToString() + "}", valueIn);
}
저는 십진법을 사용하지만 다른 것으로 유형을 변경하거나 익명 개체를 사용할 수 있습니다.음수 소수점 값에 대한 오류 검사를 추가할 수도 있습니다.
동일한 형식 값과 문화를 원하는 경우.
Double value= 1234567;
value.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN"));
출력: 12,34,567
위의 많은 제안을 시도해 보았지만, 아래의 제안이 더 효과적입니다.
string.Format("{0:##,###.00}", myValue)
하지만 0.2014와 같은 값이 있을 때 실패합니다. 21 이 값을 위해 사용합니다.
string.Format("{0:#,##0.00}", myValue)
사용해 보십시오.
var number = 123456789;
var str = number.ToString("N0");
결과: "123,456,789"
제가 예전에 문화와 잠재적인 포맷 문제에 대해 더 이상 걱정하지 않았던 방법은 통화로 포맷하고 이후에 통화 기호를 꺼냈다는 것입니다.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
DataGridview에 표시하려면 유형을 변경해야 합니다. 기본값은 String이고 10진수로 변경하면 부동 소수점이 있는 숫자로 간주되기 때문입니다.
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
언급URL : https://stackoverflow.com/questions/105770/net-string-format-to-add-commas-in-thousands-place-for-a-number
'programing' 카테고리의 다른 글
PowerShell 2.0에서 '일시 중지'를 수행하는 방법은 무엇입니까? (0) | 2023.04.28 |
---|---|
ASP에서 파일(FileContentResult)을 반환하는 방법.NET 웹 API (0) | 2023.04.28 |
카르마/재스민 테스트에서 "[object ErrorEvent] sloted" 오류를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.04.28 |
Angular ng-repeat 오류 "반복기에서 중복이 허용되지 않습니다." (0) | 2023.04.28 |
Excel에서 클릭하면 하이퍼링크가 #에서 %20-%20으로 변경됩니다. (0) | 2023.04.28 |