Pourquoi 0.ToString("#.##")
renvoie-t-il une chaîne vide? Ça ne devrait pas être 0.00
ou au moins?
#
dans le format de chaîne indique que la valeur est facultative. Si vous souhaitez obtenir le résultat 0.00
vous avez besoin des éléments suivants:
0.ToString("0.00");
Voir ici pour les formats numériques personnalisés qui peut être passé à cette méthode.
Parce que dans une chaîne de format, le #
Est utilisé pour désigner un espace réservé pour un caractère optionnel; il n'est utilisé que si nécessaire pour représenter le nombre.
Si vous faites cela à la place: 0.ToString("0.##");
vous obtenez: 0
Fait intéressant, si vous faites ceci: 0.ToString("#.0#");
vous obtenez: .0
Si vous voulez les trois chiffres: 0.ToString("0.00");
produit: 0.00
Des commentaires à cette réponse, votre argument semble être,
il devrait afficher "0", car pourquoi voudrait-on jamais voir une chaîne vide si la valeur numérique est 0?
La réponse est simple: Vous avez le choix de la manière dont vous souhaitez afficher les informations. C'est à cela que servent les chaînes de format personnalisé. Vous avez simplement choisi le format de chaîne incorrect pour vos besoins.
Selon la documentation sur le Digit Placeholder.
Si la valeur en cours de formatage comporte un chiffre à la position où le "#" apparaît dans la chaîne de formatage, ce chiffre est alors copié dans la chaîne de résultat. Sinon, rien n'est stocké à cette position dans la chaîne de résultat. 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 affichera le caractère "0" s'il s'agit d'un chiffre significatif dans le nombre affiché. La chaîne de format "##" provoque l'arrondi de la valeur au chiffre le plus proche précédant la décimale, où l'arrondi de zéro est toujours utilisé. Par exemple, le formatage 34.5 avec "##" donnerait la valeur 35.
Si vous voulez que le zéro s’affiche, utilisez le Zero PlaceHolder
si la valeur en cours de formatage a un chiffre à la position où le '0' apparaît dans la chaîne de formatage, ce chiffre est copié dans la chaîne de résultat. La position du "0" le plus à gauche avant le point décimal et du "0" le plus à droite après le point décimal détermine la plage de chiffres toujours présents dans la chaîne de résultat.
Le spécificateur "00" fait en sorte que la valeur soit arrondie au chiffre le plus proche précédant la décimale, l’arrondi de zéro étant toujours utilisé. Par exemple, le formatage 34.5 avec "00" donnerait la valeur 35.
Essayez ceci 0.ToString("#,##; #,##;0")
La première section s'applique aux valeurs positives, la deuxième section aux valeurs négatives et la troisième section aux zéros.