문제

C#에서 String.format ( "{0 : c}", somevalue)를 사용하려고하지만 내 요구를 충족시키기 위해 출력을 구성하는 방법을 알아내는 데 어려움을 겪고 있습니다. 내 필요는 다음과 같습니다.

  1. 비워진 0 출력
  2. 1.00 출력 $ 1.00
  3. 10.00 달러는 $ 10.00입니다
  4. 100.00 ~ $ 100.00
  5. 1000.00 출력 $ 1,000.00

나는 string.format ( "{0 : c}", somevalue)을 시도했지만 0 값의 경우 $ 0.00을 출력하여 내가 원하는 것이 아닙니다. 또한 String.format ( "{0 : $ 0,0.00; $ (0,0.00);#}", somevalue)를 시도했지만 1.0은 $ 01.00을 출력합니다. String.format ( "{0 : $ 0.00; $ (0.00);#}", somevalue)는 대부분의 경우 작동하지만 일부 값은 1000.00 인 경우 출력은 $ 1000.00입니다.

위의 5 가지 사례 모두에 적합한 형식이 있습니까? 내가 읽은 모든 문서는 기본 사항에 대해서만 자세히 설명하고 이러한 유형의 시나리오에 대해서는 다루지 않습니다.

도움이 되었습니까?

해결책

사용하는 경우

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

0 값에 대해 "" "를 얻을 수 있고 다른 값도 제대로 형식화되어야합니다.

다른 팁

다음과 같은 것을 시도하십시오.

String currency = (number == 0) ? String.Empty : number.ToString("c");

모든 통화 값에 대해 동일한 데이터 유형을 일관되게 사용하는지에 따라 케이스가 항상 충족되도록 확장 방법을 작성할 수 있습니다. 예를 들어 소수점 유형을 사용하는 경우 :

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}

여기에 있습니다 이 데이터를 요약 한 유용한 것을 찾을 수있는 훌륭한 참조. http://blog.stevex.net/string-formatting-in-csharp/

"C"통화 형식은 0에 대한 공백이 필요할 때까지 훌륭합니다. 여기에는 위에서 언급 한 두 가지 방법이 있습니다.

// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)

// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")

두 번째 기술은 그 스타일의 코드를 좋아한다면 더 "유창한"느낌이 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top