Partager via


Chaînes de format numériques personnalisées

Une chaîne de format numérique personnalisée, que vous créez et qui est composée d'un ou de plusieurs spécificateurs de format numériques personnalisés, définit la mise en forme des données numériques. Une chaîne de format numérique personnalisée peut également être définie comme toute chaîne autre qu'une chaîne de format numérique standard.

Le tableau suivant décrit les spécificateurs de format numériques personnalisés. Pour obtenir des exemples de la sortie produite par chaque spécificateur de format, consultez Exemples de sortie de chaînes de format numériques personnalisées. Pour plus d'informations, consultez les notes qui suivent le tableau.

Spécificateur de format Nom Description

0

Espace réservé du zéro

Si la valeur mise en forme possède un chiffre à l'emplacement où « 0 » apparaît dans la chaîne de format, ce chiffre est copié dans la chaîne de sortie. L'emplacement du « 0 » situé à l'extrême gauche avant la virgule décimale et du « 0 » situé à l'extrême droite après la virgule décimale détermine la plage des chiffres qui sont toujours présents dans la chaîne résultante.

Le spécificateur « 00 » provoque l'arrondissement de la valeur au chiffre le plus proche précédant la virgule ; l'arrondissement à une valeur différente de zéro est toujours utilisé. Par exemple, la mise en forme de 34,5 avec « 00 » produit la valeur 35.

#

Espace réservé de chiffre

Si la valeur mise en forme possède un chiffre à l'emplacement où « # » apparaît dans la chaîne de format, ce chiffre est copié dans la chaîne résultante. Sinon, rien n'est stocké à cet emplacement dans la chaîne résultante.

Remarquez que ce spécificateur n'affiche jamais le caractère « 0 » s'il ne s'agit pas d'un chiffre significatif, même si « 0 » est le seul chiffre de la chaîne. Il affiche le caractère « 0 » s'il s'agit d'un chiffre significatif dans le nombre qui apparaît.

La chaîne de format « ## » provoque l'arrondissement de la valeur au chiffre le plus proche précédant la virgule ; l'arrondissement à une valeur différente de zéro est toujours utilisé. Par exemple, la mise en forme de 34,5 avec « ## » produit la valeur 35.

.

Virgule décimale

Le premier caractère « , » de la chaîne de format détermine l'emplacement du séparateur décimal dans la valeur mise en forme. Tout caractère « , » supplémentaire est ignoré.

Le caractère réellement utilisé comme séparateur décimal est déterminé par la propriété NumberDecimalSeparator du NumberFormatInfo qui contrôle la mise en forme.

,

Séparateur des milliers et mise à l'échelle des nombres

Le caractère « , » sert aussi bien de spécificateur de séparateur de milliers que de spécificateur de mise à l'échelle des nombres.

Spécificateur de séparateur de milliers : si un ou plusieurs caractères « , » sont spécifiés entre deux espaces réservés aux chiffres (0 ou #) qui mettent en forme les chiffres intégraux d'un nombre, un caractère de séparation des groupes est inséré entre chaque groupe de nombres dans la partie intégrale de la sortie.

Les propriétés NumberGroupSeparator et NumberGroupSizes de l'objet NumberFormatInfo en cours déterminent le caractère utilisé comme séparateur de groupes de nombres et la taille de chaque groupe de nombres. Par exemple, si la chaîne « #,# » et la culture indifférente sont utilisées pour mettre en forme le nombre 1000, la sortie est « 1,000 ».

Spécificateur de mise à l'échelle des nombres : si un ou plusieurs caractères « , » sont spécifiés immédiatement à gauche de la virgule décimale explicite ou implicite, le nombre à mettre en forme est divisé par 1000 chaque fois qu'un spécificateur de mise à l'échelle des nombres se présente. Par exemple, si la chaîne « 0,, » est utilisée pour mettre en forme le nombre 100 millions, la sortie est « 100 ».

Vous pouvez utiliser des spécificateurs de séparateur de milliers et de mise à l'échelle des nombres dans la même chaîne de format. Par exemple, si la chaîne « #,0,, » et la culture indifférente sont utilisées pour mettre en forme le nombre 1 milliard, la sortie est « 1,000 ».

%

Espace réservé de pourcentage

La présence d'un caractère « % » dans une chaîne de format entraîne la multiplication d'un nombre par 100 avant sa mise en forme. Le symbole approprié est inséré dans le nombre proprement dit, à l'endroit où le caractère « % » apparaît dans la chaîne de format. Le caractère pour cent dépend de la classe NumberFormatInfo en cours.

E0

E+0

E-0

e0

e+0

e-0

Notation scientifique

Si une des chaînes « E », « E+ », « E- », « e », « e+ » ou « e- » est présente dans la chaîne de format et immédiatement suivie d'au moins un caractère « 0 », le nombre est mis en forme à l'aide de la notation scientifique, avec un « E » ou « e » inséré entre le nombre et l'exposant. Le nombre de caractères « 0 » qui suivent l'indicateur de notation scientifique détermine le nombre minimal de chiffres à afficher pour l'exposant. Les formats « E+ » et « e+ » indiquent qu'un signe (plus ou moins) doit toujours précéder l'exposant. Les formats « E », « E- », « e » et « e- » indiquent qu'un signe ne doit précéder que les exposants négatifs.

\

Caractère d'échappement

En C# et C++, la barre oblique inverse entraîne l'interprétation du caractère suivant de la chaîne de format comme une séquence d'échappement. Elle est utilisée dans les séquences de mise en forme traditionnelles, telles que « \n » (nouvelle ligne).

Dans certains langages, le caractère d'échappement proprement dit doit être précédé d'un caractère d'échappement s'il est utilisé comme caractère littéral. Sinon, le compilateur interprète le caractère comme une séquence d'échappement. Utilisez la chaîne « \\ » pour afficher « \ ».

Remarquez que ce caractère d'échappement n'est pas pris en charge dans Visual Basic. Cependant, ControlChars fournit les mêmes fonctionnalités.

'ABC'

"ABC"

Chaîne littérale

Les caractères compris entre des guillemets simples ou doubles sont copiés dans la chaîne résultante et n'affectent pas la mise en forme.

;

Séparateur de section

Le caractère « ; » est utilisé pour séparer les sections pour les nombres positifs, négatifs et les zéros dans la chaîne de format.

Autres

Tous les autres caractères

Tout autre caractère est copié dans la chaîne résultante et n'affecte pas la mise en forme.

Remarques

Infinis à virgule flottante et NaN

Notez que quelle que soit la chaîne de format, si la valeur d'un type à virgule flottante Single ou Double est l'infini positif, l'infini négatif ou une valeur non numérique (NaN), la chaîne mise en forme est la valeur de la propriété PositiveInfinitySymbol, NegativeInfinitySymbol ou NaNSymbol spécifiée par l'objet NumberFormatInfo actuellement applicable.

Paramètres du panneau de configuration

Les paramètres de l'élément Options régionales et linguistiques du Panneau de configuration influencent la chaîne résultante produite par une opération de mise en forme. Ces paramètres sont utilisés pour initialiser l'objet NumberFormatInfo associé à la culture du thread en cours et la culture du thread en cours fournit des valeurs utilisées pour indiquer la mise en forme. Les ordinateurs utilisant des paramètres différents génèrent des chaînes résultantes différentes.

Arrondi et chaînes de format à virgule fixe

Notez que, pour les chaînes de format à virgule fixe (c'est-à-dire les chaînes de format ne contenant pas de caractères de format de notation scientifique), les nombres sont arrondis au même nombre de décimales que d'espaces réservés aux chiffres à droite de la virgule décimale. Si la chaîne de format ne contient pas de virgule décimale, le nombre est arrondi à l'entier le plus proche. Si le nombre possède plus de chiffres que d'espaces réservés de chiffres à gauche de la virgule décimale, les chiffres supplémentaires sont copiés dans la chaîne résultante immédiatement avant le premier espace réservé de chiffre.

Séparateurs de section et mise en forme conditionnelle

Une autre mise en forme peut être appliquée à une chaîne selon que la valeur est positive, négative ou nulle. Pour entraîner ce comportement, une chaîne de format personnalisée peut contenir jusqu'à trois sections séparées par des points-virgules. Ces sections sont décrites dans le tableau suivant.

Nombre de sections Description

Une section

La chaîne de format s'applique à toutes les valeurs.

Deux sections

La première section s'applique aux valeurs positives et aux zéros, et la deuxième section s'applique aux valeurs négatives.

Si le nombre à mettre en forme est négatif, mais devient nul après l'arrondissement au format de la deuxième section, le zéro résultant est mis en forme en fonction de la première section.

Trois sections

La première section s'applique aux valeurs positives, la deuxième section s'applique aux valeurs négatives et la troisième section s'applique aux zéros.

La deuxième section peut rester vide (en n'insérant aucune valeur entre les points-virgules), auquel cas la première section s'applique à toutes les valeurs différentes de zéro.

Si le nombre à mettre en forme est différent de zéro, mais devient nul après l'arrondissement au format de la première ou deuxième section, le zéro résultant est mis en forme en fonction de la troisième section.

Les séparateurs de section ignorent toute mise en forme préexistante associée à un nombre lorsque la valeur finale est mise en forme. Par exemple, les valeurs négatives sont toujours affichées sans signe moins lorsque des séparateurs de section sont utilisés. Si vous souhaitez que la valeur mise en forme finale soit précédée d'un signe moins, vous devez inclure ce signe explicitement comme élément du spécificateur de format personnalisé.

Les fragments de code suivants illustrent la manière dont les séparateurs de section peuvent être utilisés pour produire des chaînes mises en forme.

Dim MyPos As Double = 19.95
Dim MyNeg As Double = -19.95
Dim MyZero As Double = 0

' In the U.S. English culture, MyString has the value: $19.95.
Dim MyString As String = MyPos.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: ($19.95).
' The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero")

' In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero")
double MyPos = 19.95, MyNeg = -19.95, MyZero = 0.0;

// In the U.S. English culture, MyString has the value: $19.95.
string MyString = MyPos.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: ($19.95).
// The minus sign is omitted by default.
MyString = MyNeg.ToString("$#,##0.00;($#,##0.00);Zero");

// In the U.S. English culture, MyString has the value: Zero.
MyString = MyZero.ToString("$#,##0.00;($#,##0.00);Zero");

Deux exemples de format personnalisé

Les fragments de code suivants illustrent la mise en forme numérique personnalisée. Dans les deux cas, l'espace réservé au chiffre (#) dans la chaîne de format personnalisée affiche les données numériques, et tous les autres caractères sont copiés vers la sortie.

Dim myDouble As Double = 1234567890
Dim myString As String = myDouble.ToString( "(###) ### - ####" )
' The value of myString is "(123) 456 – 7890".

Dim MyInt As Integer = 42
MyString = MyInt.ToString( "My Number = #" )
' In the U.S. English culture, MyString has the value: 
' "My Number = 42".
Double myDouble = 1234567890;
String myString = myDouble.ToString( "(###) ### - ####" );
// The value of myString is "(123) 456 – 7890".

int  MyInt = 42;
MyString = MyInt.ToString( "My Number = #" );
// In the U.S. English culture, MyString has the value: 
// "My Number = 42".

Voir aussi

Référence

NumberFormatInfo

Concepts

Chaînes de format numériques
Exemples de sortie de chaînes de format numériques personnalisées
Chaînes de format numériques standard

Autres ressources

Mise en forme des types