Existe-t-il un moyen de spécifier une chaîne de format numérique standard ou personnalisée pour toujours afficher le signe, que ce soit + ve ou -ve (bien que ce qu'il devrait faire pour zéro, je ne suis pas sûr!)
c#
.net
formatting
string-formatting
Craig Shearer
la source
la source
+#;-#
, pour la valeur 0 je reçois juste « + », sans 0. réel pour moi , je veux 0 à apparaître comme « +0 », ceci marche:+#;-#;+0
.''
fera de grandes choses! Regardez ceciChanges.ToString("'('#' ▲)';'('#' ▼)';''")
:! Cela m'a fait gagner beaucoup de temps et des centaines deif
déclarations! :)+0;-#
place de+#;-#;+0
Cette réponse était vraiment trompeuse pour moi.Attention, lors de l'utilisation de la mise en forme conditionnelle, la valeur négative n'obtient pas automatiquement un signe. Tu as besoin de faire
string MyString = number.ToString("+#;-#;0");
la source
+0;-#
vous donne le même résultat avec un code plus propre.Vous pouvez également utiliser des chaînes de format dans string.Format (); la chaîne de format est séparée de l'index par un deux-points (':')
var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);
Pour le nombre {+1, -1, 0}, cela donne:
Vous pouvez également utiliser une chaîne interpolée au lieu de
string.Format
pour obtenir le même résultat:var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
la source
+#;-#
format pour la valeur 0+0;-#
. :)+#;-#;+0
plutôt+#;-#
que car cela indique plus clairement que 0 sera formaté comme +0Contrairement aux autres réponses, il semble que si vous voulez obtenir +1, -1, +0 (pour les arguments 1, -1, 0), vous devez utiliser le format:
String.Format("{0:+#;-#;+0}", 0)); // output: +0
ou
String.Format("{0:+0;-#}", 0)); // output: +0
Si vous utilisez juste,
+#;-#
il affichera juste+
(pas+0
) pour 0.Le spécificateur personnalisé «#» (à l' adresse https://msdn.microsoft.com/en-us/library/0c899ak8.aspx )
Veuillez également garder à l'esprit que si vous avez besoin d'une précision décimale, vous devez la spécifier comme ça:
String.Format("{0:+0.##;-#.##}", 0)); // output: +0
ou, si vous ne voulez pas que les zéros apparaissent toujours, comme ça:
String.Format("{0:+0.00;-#.00}", 0)); // output: +0.00
la source
Pour une expression numérique de tout type:
+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0
Utilisez trois parties pour trois cas: positif; négatif; zéro
Autres aspects de l'exemple:
Zéro n'est pas signé. Vous pouvez l'afficher sous forme de n'importe quoi, par exemple "zéro".
Les valeurs absolues inférieures à un ont un 0 avant le point décimal. Ajustez au goût.
Le nombre de chiffres correspond aux valeurs décimales absolues les plus grandes et les plus petites. Ajustez au goût.
Le caractère de point décimal est spécifique à la culture. Substituts .NET.
Les séparateurs de regroupement sont facultatifs. Le personnage est spécifique à la culture. Substituts .NET. (Les positions sont également spécifiques à la culture, mais elles ne sont contrôlées que par votre chaîne de format.) Vous utilisez également tout autre caractère à l'exception des caractères spéciaux pour Format (qui incluent,. # 0).
la source
Je ne peux pas commenter donc je fais une réponse ici (système de réputation de noix ...)
Vous pouvez très bien utiliser number.ToString ("+ 0; - #") pour produire le TimeFormat de chaîne UTC
Ici montré dans le code PowerShell
"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"
Merci @gcores https://stackoverflow.com/users/40256/gcores
la source