답변:
String.Format("{0:n}", 1234); // Output: 1,234.00
String.Format("{0:n0}", 9876); // No digits after the decimal point. Output: 9,876
string.Format("{0:n0}", Double.Parse(yourValue));
나는 이것이 가장 간단한 방법이라는 것을 알았습니다.
myInteger.ToString("N0")
int number = 1000000000;
string whatYouWant = number.ToString("#,##0");
//You get: 1,000,000,000
,
공백 또는 짝수와 같이 천 단위 구분 기호 이외의 문자를 사용합니다 .
.
.
.NET은 자동으로 쉼표를 해당 구분 기호로 바꿉니다. 다시 말하지만, 이것이 왜 그런지 이해하지 못한다면 Roger가 게시 한 링크를 읽으십시오.
관련 출력이있는 표준 형식
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 culture) :
(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
변수는 어디에서 i
자리 표시 자 (즉, 대신에 넣어 {0}
). 따라서 어떤 물체가 어떤 위치에 있는지 기억할 필요가 없습니다. 서식 (예 :) :n
은 변경되지 않았습니다. 새로운 기능의 전체 기능을 보려면이 페이지로 이동하십시오 .
다음 예제는 자리 표시자가없는 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"
서식을 지정하는 값은 숫자 여야합니다. 숫자의 문자열 표현이 필요하고 형식은 쉼표로 보이지 않습니다.
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);
}
십진수를 사용하지만 유형을 다른 것으로 변경하거나 익명 객체를 사용할 수 있습니다. 음의 소수점 이하 자릿수 값에 대한 오류 검사를 추가 할 수도 있습니다.
문화와 잠재적 인 서식 문제에 대해 더 이상 걱정하지 않는 방법은 통화 형식을 지정하고 나중에 통화 기호를 꺼내는 것입니다.
if (decimal.TryParse(tblCell, out result))
{
formattedValue = result.ToString("C").Substring(1);
}
fr-FR
하거나 (예 :) 하나 이상의 문자를 사용하여 통화를 표시 da-DK
하거나 (예 :) 쉼표를 사용하여 수천을 구분하지 않는 원치 않는 결과를 생성 할 수 있습니다 (예 : 대부분 유럽 대륙).
아래는 자바에서 좋은 솔루션입니다!
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");
출력 : Rs.9,999,999.00
에스토니아어 로케일 출력
Locale locale = new Locale("et", "EE");
출력 : 9,999,999 €
다른 출력에서 볼 수 있듯이 구분 기호가 쉼표 또는 점이 거나 심지어 공백 인지 걱정할 필요가 없습니다 .i18n 표준에 따라 숫자 형식을 지정할 수 있습니다
locale
??
String.Format("{0:#,##0}", 1234);
소수점 이하 자릿수없이 작동합니다.