string.format ( "{0 : c2}", -1234) (통화 형식)는 음수를 양수로 취급합니다.
-
05-07-2019 - |
문제
나는 사용 중입니다 String.Format("{0:C2}", -1234)
숫자를 포맷합니다.
그것은 항상 양을 양수로 형식화하고 $가되기를 원합니다. - 1234
해결책 3
나는 단순히 사용하겠다고 생각합니다.
FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)
(Microsoft.visualBasic.strings 모듈에서)
또는 짧은 단어로 (이것은 실제로 내가 실제로 사용할 것입니다) :
FormatCurrency(-1234.56, 2, 0, 0)
또는 내 사용자 정의 매개 변수를 전달하는 VB 함수를 사용하는 사용자 정의 형식 Currency 함수로 만들 것입니다.
자세한 내용은 형식 화폐 함수 (Visual Basic) MSDN에서.
다른 팁
내가 괄호 안에 넣고 있다고 말하는 것이 맞습니까? ($1,234.00)
? 그렇다면 나는 그것이 미국의 의도 된 행동이라고 생각합니다.
그러나 직접 만들 수 있습니다 NumberFormatInfo
이런 식으로 행동하지 않습니다. 기존을 가져 가라 NumberFormatInfo
"대부분 옳다", 전화 Clone()
돌연변이 가능한 사본을 만들고 CurrencyNegativePattern
적절하게 (나는 당신이 가치 2를 원한다고 생각합니다.).
예를 들어:
using System;
using System.Globalization;
class Test
{
static void Main()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
string formatted = string.Format(clonedNumbers, "{0:C2}", -1234);
Console.WriteLine(formatted);
}
}
이것은 $ -1,234.00을 인쇄합니다. 실제로 정확히 $ -1234를 원한다면 CurrencyGroupSizes
속성 new int[]{0}
그리고 사용 "{0:C0}"
대신에 "{0:C2}"
형식 문자열로.
편집 : 다음은 기본적으로 동일한 작업을 수행 할 수있는 도우미 방법입니다.
private static readonly NumberFormatInfo CurrencyFormat = CreateCurrencyFormat();
private static NumberFormatInfo CreateCurrencyFormat()
{
var usCulture = CultureInfo.CreateSpecificCulture("en-US");
var clonedNumbers = (NumberFormatInfo) usCulture.NumberFormat.Clone();
clonedNumbers.CurrencyNegativePattern = 2;
return clonedNumbers;
}
public static string FormatCurrency(decimal value)
{
return value.ToString("C2", CurrencyFormat);
}
또 다른 간단한 옵션은 형식 문자열을 수동으로 지정하는 것입니다.
String.Format("{0:$#,##0.00}", -1234)
또는 통화 기호가 매개 변수 여야하는 경우이를 수행 할 수 있습니다.
String.Format("{0:" + symbol + "#,##0.00}", -1234)