90 votes

Qu'est-ce que le format ToString("N0") ?

Ce code est tiré du livre "Programming Windows Sixth Edition" de Charles Pettzold :

public object Convert(object value, Type targetType, object parameter, string language) 
{ 
    return ((double)value).ToString("N0"); 
}

ToString("N0") est censé imprimer la valeur avec des séparateurs à virgule et sans point décimal. Je ne parviens pas à trouver la référence à des ToString surcharge et "N0" dans la documentation. Veuillez m'indiquer le bon endroit dans la documentation .NET.

171voto

Darin Dimitrov Points 528142

Consultez le site following article sur MSDN pour des exemples de l'utilisation de la N format. Ce point est également abordé dans le Standard Numeric Format Strings article.

Extraits pertinents :

//       Formatting of 1054.32179:
//          N:                     1,054.32 
//          N0:                    1,054 
//          N1:                    1,054.3 
//          N2:                    1,054.32 
//          N3:                    1,054.322 

Lorsque le spécificateur de précision contrôle le nombre de chiffres fractionnaires dans la chaîne de résultats, la chaîne de résultats reflète un nombre qui est arrondi à un résultat représentable le plus proche du résultat infiniment précis. S'il existe deux résultats représentables également proches :

  • Sous .NET Framework et .NET Core jusqu'à .NET Core 2.0, le moteur d'exécution sélectionne le résultat avec le chiffre le moins significatif le plus élevé (c'est-à-dire en utilisant MidpointRounding.AwayFromZero).
  • Sur .NET Core 2.1 et les versions ultérieures, le moteur d'exécution sélectionne le résultat avec un chiffre pair le moins significatif (c'est-à-dire en utilisant MidpointRounding.ToEven).

4voto

nurettin Points 4083

C'est là que se trouve la documentation :

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

Le spécificateur de format numérique ("N") convertit un nombre en une chaîne de caractères de type la forme "-d,ddd,ddd.ddd...", où "-" indique un symbole de nombre négatif si nécessaire, "d" indique un chiffre (0-9) ... un symbole si nécessaire, "d" indique un chiffre (0-9) ...

C'est ici que l'on parle de défaut (2) :

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimaldigits.aspx

      // Displays a negative value with the default number of decimal digits (2).
      Int64 myInt = -1234;
      Console.WriteLine( myInt.ToString( "N", nfi ) );

2voto

skyfoot Points 3480

Voici peut-être un bon début

Double.ToString()

Les exemples ci-dessous présentent différentes options de formatage. Double.ToString(string)

1voto

Janes Abou Chleih Points 1681

Vous pouvez trouver la liste des formats ici (dans l'article Double.ToString()-MSDN-Article) en tant que commentaires dans la section de l'exemple.

0voto

snr Points 4881

Il s'agit d'une sorte de spécificateur de format pour formater les résultats numériques. Il existe des spécificateurs supplémentaires sur le lien .

Ce qu'il faut faire N Il sépare les nombres en milliers de décimales en fonction de l'âge de la personne. CultureInfo et ne représente que 2 chiffres décimaux en partie flottante, comme c'est le cas N2 en arrondissant le chiffre le plus à droite si nécessaire.

N0 ne représente aucune décimale, mais l'arrondi lui est appliqué.

Prenons un exemple.

using System;
using System.Globalization;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            double x = 567892.98789;
            CultureInfo someCulture = new CultureInfo("da-DK", false);

            // 10 means left-padded = right-alignment
            Console.WriteLine(String.Format(someCulture, "{0:N} denmark", x));
            Console.WriteLine("{0,10:N} us", x); 

            // watch out rounding 567,893
            Console.WriteLine(String.Format(someCulture, "{0,10:N0}", x)); 
            Console.WriteLine("{0,10:N0}", x);

            Console.WriteLine(String.Format(someCulture, "{0,10:N5}", x));
            Console.WriteLine("{0,10:N5}", x);

            Console.ReadKey();

        }
    }
}

Il en résulte,

567.892,99 denmark
567,892.99 us
   567.893
   567,893
567.892,98789
567,892.98789

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X