Frage

Ich bin mit String.Format("{0:C2}", -1234) zu Format Zahlen.

Es formatiert immer die Menge auf eine positive Zahl, während ich es will $ werden - 1234

War es hilfreich?

Lösung 3

Ich denke, ich werde einfach verwenden:

FormatCurrency(-1234.56, 2, UseParensForNegativeNumbers:=TriState.False)

(in Microsoft.VisualBasic.Strings Modul)

oder in kürzeren Worten (das ist, was im gehend zu verwenden, tatsächlich):

FormatCurrency(-1234.56, 2, 0, 0)

Oder ich werde mir eine benutzerdefinierte Formatcurrency Funktion vornehmen, die VB-Funktion verwendet meine benutzerdefinierte params übergeben.

Für weitere Details werfen Sie einen Blick auf die Formatcurrency Funktion ( Visual Basic) in der MSDN-Website.

Andere Tipps

Bin ich zu Recht sagen, es ist es in Klammern setzen, das heißt, sie es als ($1,234.00) Formatierung wird? Wenn ja, ich glaube, das ist das beabsichtigte Verhalten für die USA.

Sie können jedoch Ihre eigene NumberFormatInfo erstellen, die nicht auf diese Weise verhält. Nehmen Sie eine vorhandene NumberFormatInfo, die „meistens richtig“ ist, rufen Clone() eine änderbare Kopie zu machen, und legen Sie dann die CurrencyNegativePattern angemessen (ich glaube, Sie wollen Wert 2).

Zum Beispiel:

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);
    }
}

Dieses druckt -1,234.00 $. Wenn Sie tatsächlich genau -1234 $ wollen, müssen Sie die CurrencyGroupSizes Eigenschaft new int[]{0} und "{0:C0}" statt "{0:C2}" als Format-String verwendet werden.

EDIT: Hier ist eine Hilfsmethode Sie die im Grunde macht das Gleiche verwenden können:

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);
}

Eine weitere einfache Möglichkeit, manuell die Formatzeichenfolge angeben.

String.Format("{0:$#,##0.00}", -1234)

Oder, wenn das Währungssymbol ein Parameter sein muss, könnten Sie dies tun

String.Format("{0:" + symbol + "#,##0.00}", -1234)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top