2009-07-17 3 views
8

C#에서는 값이 10215.24 인 이중 가변 가격이 있습니다. 나는 몇 자리 뒤에 쉼표로 가격을 보여주고 싶다. 내 예상 출력은 내가이 그것을해야한다고 생각 10,215.24C# : Formatting Price 값 문자열

+2

당신이 제안한 답변은 .ToString ("N")이 좋습니다. 출력 결과가 현재 CultureInfo에 따라 달라질뿐입니다. 이것은 좋은 일입니다. 내 시스템 (스웨덴어 로케일)에서는 "10,215,24"가 나와 의미가있는 "10 215,24"를 인쇄합니다. 이 문자열을 구문 분석하여 DateTime *으로 다시 변환하려고하면 문제가 발생할 수 있습니다. –

+0

@Fredrik : 왜 다시 * DateTime *으로 구문 분석하겠습니까? –

+0

그의 두뇌는 아마도 중간 문장을 바꿨을 것입니다 : p – Svish

답변

26
myPrice.ToString("N2"); 

당신이 원하는에 따라, 당신은 또한 통화 기호를 표시 할 수 있습니다

myPrice.ToString("C2"); 

합니다 (C 뒤의 숫자 또는 N이 사용되어야하는 소수를 나타냅니다). (C는 통화 기호로 통화 문자열로 숫자 서식을 지정 함)

정치적으로 정확하려면 사용할 CultureInfo를 지정할 수도 있습니다.

+1

나는 "N2"가 그들이 무엇인지 생각한다. –

+0

그래도 2 종류의 기본값이 아닌가요? 그래서 당신은 단지'myPrice.ToString ("N")'을 필요로 할 것입니다.중요하지 않은 것, 단지 궁금한 점 : p – Svish

+0

C2가 올바르지 않습니다. 통화가 표시되기 때문에 –

15

입니다 : 당신이 통화 기호를 원하지 않는 경우

String.Format("{0:C}", doubleVar); 

, 그럼 그냥 이렇게 :

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

나는 그들이 생각하고 싶지 않다 통화 기호입니다. –

+1

이 답변에 자리하고 있습니다. 그러나 다양한 다른 형식의 서식을 보려면 http://msdn.microsoft.com/en-us/library/fht0f5be.aspx를 참조하십시오. – James

4

봐 특별히 format strings,에 "옥수수".

double price = 1234.25; 
string FormattedPrice = price.ToString("N"); // 1,234.25 
6

보조 노트로 통화 용 Decimal 유형을 살펴 보는 것이 좋습니다. 그것은 떠 다니는 것을 괴롭히는 반올림 오류를 피하지만 Integer와는 달리 소수점 이하의 자릿수를 가질 수 있습니다.

+0

실제로. 십진수는 정밀도가 중요한 것에 사용되어야합니다. –

+1

특정 금융 응용 프로그램에서는 모든 반올림이 지정된 방식으로 수행되어야하기 때문에 수레를 사용하는 것은 불법입니다. Decimal 또는 BigNumbers 유형의 클래스를 사용할 수없는 대안은 정수를 사용하여 통화 단위의 분수를 저장하는 것입니다. 예를 들어, 우리는 동전이나 동전을 계산할 수 있습니다. –

+0

부동 소수점 오류가 인텔 칩 및 호환 기와 분리되어있는 것은 사실입니까? –

1

이것은 당신이 원하는 하나 "N2"입니다

String.Format("{#,##0.00}", 1243.50); // Outputs “1,243.50″ 

    String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 1243.50); // Outputs “$1,243.50″ 

    String.Format("{0:$#,##0.00;($#,##0.00);Zero}", -1243.50); // Outputs “($1,243.50)″ 

    String.Format("{0:$#,##0.00;($#,##0.00);Zero}", 0); // Outputs “Zero″ 
0

를 도움이 될 수 있습니다. 당신은 수도도이 같은

double dPrice = 29.999988887777666655554444333322221111; 
string sPrice = "£" + dPrice.ToString("N2"); 

:

string sPrice = ""; 

if(dPrice < 1) 
{ 
    sPrice = ((int)(dPrice * 100)) + "p"; 

} else 
{ 
    sPrice = "£" + dPrice.ToString("N2"); 

} 

이에 잘 응축 : 여기

은 예입니다 또한 다양한 다른 유형의 msdn.microsoft.com/en-us/library/fht0f5be.aspx에서 읽기

string sPrice = dPrice < 1 ? ((int)(dPrice * 100)).ToString("N0") + "p" : "£" + dPrice.ToString("N2"); 

형식 지정