string.format과 함께 사용할 사용자 지정 통화 형식이 필요합니다
-
23-08-2019 - |
문제
C#에서 String.format ( "{0 : c}", somevalue)를 사용하려고하지만 내 요구를 충족시키기 위해 출력을 구성하는 방법을 알아내는 데 어려움을 겪고 있습니다. 내 필요는 다음과 같습니다.
- 비워진 0 출력
- 1.00 출력 $ 1.00
- 10.00 달러는 $ 10.00입니다
- 100.00 ~ $ 100.00
- 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);''")
두 번째 기술은 그 스타일의 코드를 좋아한다면 더 "유창한"느낌이 듭니다.