Comment dois-je formater un C# décimal pour supprimer les suivantes 0?
Je veux formater une chaîne de caractères comme une virgule, mais la virgule contient certains suite de zéros après la virgule. Comment puis-je formater tels que ceux de sens 0 disparaître?
string.Format("{0}", 1100M);
string.Format("{0}", 1100.1M);
string.Format("{0}", 1100.100M);
string.Format("{0}", 1100.1000M);
affiche:
1100
1100.1
1100.100
1100.1000
mais je veux qu'il soit:
1100
1100.1
1100.1
1100.1
Pour référence, voici d'autres questions qui sont essentiellement des doublons de ce que j'ai trouvé grâce aux réponses données ici:
- Analyser décimal et filtre supplémentaire 0 sur la droite?
- La meilleure façon de les afficher en décimal sans zéros de fin
- Comment puis-je bande de zéros et décimal points de la virgule cordes?
- Est 1002.231 Juste un exemple? Qui est, voulez-vous 1.12000 à 1.12 ou 1.120?
- Notez que si vous voulez une valeur décimale, vous devez utiliser l'un, par exemple, 1100.1000 m. Remarque: le "m" pour "décimal littérale".
- Merci, j'ai remarqué que aussi et est allé à la fixer, et votre commentaire est en attente pour moi, quand je suis retourné.. Si vite... 😉
- Juste un exemple, oui, j'ai mis à jour avec plus d'exemples.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
ToString()
avec le Général ("G") Spécificateur de Format pour obtenir le résultat souhaité. Les zéros à droite sont tronqués lors de l'utilisation de ce format de chaîne de caractères avec une précision spécifiée. Afin d'éviter l'arrondissement dans toutes les situations, vous aurez besoin de définir la précision de la valeur maximale autorisée pour les décimales (29).La ligne de code à produire ce que vous voulez, c'est
number.ToString("G29")
, oùnumber
est votre origine décimal.Être conscient que tous les nombres plus petits que 0,0001 seront convertis à la notation scientifique. Plus de détails sur la façon dont ce formateur œuvres peuvent être trouvés dans la référence ci-dessus.
Ils ne sont pas nécessairement dénuée de sens, ils indiquent la précision lors du calcul. Décimales de maintenir leur niveau de précision, plutôt que d'être normalisé.
J'ai un peu de code dans cette réponse qui renvoie une valeur normalisée - vous pourriez l'utiliser, et puis le format du résultat. Par exemple:
Je suspect que la plupart de la chaîne de format approches échouent. Je suppose qu'une chaîne de format de "0". et puis 28 # caractères de travail, mais il serait très laid...
Vous pouvez spécifier le chaîne de format comme ceci:
Comment sur:
Contrairement à ce que tout le monde vous suggérons d'utiliser un
G
spécificateur de format je dirais que la suite de préserver à la fois le séparateur de milliers et le point décimal lors de la suppression supplémentaire de zéros à droite:Le résultat de ce format est beaucoup mieux que de G dans la plupart des cas:
Et la
G
spécificateur ne peut pas vraiment gérer toutes les combinaisons possibles:Assez peu de réponses déjà. Je fais souvent référence à cette feuille de triche: http://blog.stevex.net/string-formatting-in-csharp/
Un peu hackish, mais cela devrait fonctionner:
a = 100.000
? Oua = 0
?a = 100M
?Je crois que vous voulez faire: