Question

J'utilise String.Format ("{0: C2}", -1234) pour formater les nombres.

Il formate toujours le montant en un nombre positif, alors que je souhaite qu'il devienne $ - 1234

.
Était-ce utile?

La solution 3

Je pense que je vais simplement utiliser:

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

(dans le module Microsoft.VisualBasic.Strings)

Ou en termes plus courts (voici ce que je vais utiliser):

FormatCurrency(-1234.56, 2, 0, 0)

Ou je me créerai une fonction de conversion de format personnalisée utilisant la fonction VB en transmettant mes paramètres personnalisés.

Pour plus d'informations, consultez la fonction FormatCurrency ( Visual Basic) dans le msdn.

Autres conseils

Ai-je raison de dire qu'il le met entre crochets, c'est-à-dire qu'il le formate en tant que (1 234,00 $) ? Si tel est le cas, j’estime que c’est le comportement prévu pour les États-Unis.

Cependant, vous pouvez créer votre propre NumberFormatInfo qui ne se comporte pas de cette façon. Prenez un NumberFormatInfo existant, qui est "généralement à droite", appelez Clone () pour créer une copie mutable, puis définissez le CurrencyNegativePattern de manière appropriée (je pense que vous voulez la valeur 2). / p>

Par exemple:

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

Ceci imprime -1 234,00 $. Si vous voulez exactement $ -1234, vous devez définir CurrencyGroupSizes propriété sur new int [] {0} et utilisez à la place <{code>: {0: C0} & <; code> de "{0: C2}" en tant que chaîne de formatage.

EDIT: Voici une méthode d'assistance que vous pouvez utiliser et qui fait essentiellement la même chose:

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

Une autre option simple consiste à spécifier manuellement la chaîne de formatage.

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

Ou, si le symbole monétaire doit être un paramètre, vous pouvez le faire

String.Format("{0:" + symbol + "#,##0.00}", -1234)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top