백분율 값의 형식 10 진수?


206

내가 원하는 것은 다음과 같습니다.

String.Format("Value: {0:%%}.", 0.8526)

%%는 해당 형식 공급자이거나 내가 찾고있는 것입니다. 결과 :Value: %85.26. .

기본적으로 wpf 바인딩에 필요하지만 먼저 일반적인 형식 문제를 해결해 보겠습니다.

<TextBlock Text="{Binding Percent, StringFormat=%%}" />

답변:



11

문화 종속 서식을 따로 설정하고 값과 "%"사이에 공백이 있는지 여부와 "%"가 선행 또는 후행인지 여부를 명시 적으로 제어해야하는 충분한 이유가있는 경우 NumberFormatInfo의 PercentPositivePatternPercentNegativePattern 속성.

예를 들어, 뒤에 "%"가 있고 값과 "%"사이에 공백이없는 10 진수 값을 얻으려면 다음을 수행하십시오.

myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });

더 완전한 예 :

using System.Globalization; 

...

decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)

3

항목과 같은 숫자를 유지할 수있는 형식을 사용하려면이 형식이 적합합니다. "# \\%"


2

이 코드가 도움이 될 수 있습니다.

double d = double.Parse(input_value);
string output= d.ToString("F2", CultureInfo.InvariantCulture) + "%";

-8

위의 답변이 최상의 솔루션이라는 것을 알았지 만 백분율 기호 앞에 선행 공백이 마음에 들지 않습니다. 다소 복잡한 솔루션을 보았지만 다른 반올림 솔루션을 사용하는 대신 위의 답변에이 대체 추가를 사용하십시오.

String.Format("Value: {0:P2}.", 0.8526).Replace(" %","%") // formats as 85.26% (varies by culture)

그리고 여전히 잘못된 경우, 입력을 너무 많이 강제하려면 숫자가 float로 표시되고 퍼센트 부호를 추가 할 수 있습니다. 교체는 비용이 많이 들고이 경우에는 유용하지 않습니다. "String.Format ("Value : {0 : F2} . ", 0.8526 * 100)"
rekiem87
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.