문제

나는 사용 중입니다 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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top