Pourquoi 0.ToString("#.##")
renvoie une chaîne vide? Ne devrait-il pas être 0.00
ou au moins 0 ?
Pourquoi 0.ToString("#.##")
renvoie une chaîne vide? Ne devrait-il pas être 0.00
ou au moins 0 ?
Réponses:
#
dans le format de chaîne, indiquez que la valeur est facultative. Si vous souhaitez obtenir la sortie, 0.00
vous avez besoin des éléments suivants:
0.ToString("0.00");
Voir ici pour les formats numériques personnalisés qui peuvent être passés à cette méthode.
Parce que dans une chaîne de format, le #
est utilisé pour signifier un espace réservé de caractère facultatif; 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 cela: 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 quelqu'un voudrait-il 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 l'afficher. C'est à cela que servent les chaînes de format personnalisées. Vous avez simplement choisi la chaîne de format incorrecte pour vos besoins .
Selon la documentation sur le Digit Placeholder .
Si la valeur mise en forme a un chiffre à la position où le «#» apparaît dans la chaîne de format, ce chiffre est 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 "##" entraîne l'arrondi de la valeur au chiffre le plus proche précédant la décimale, où l'arrondi à partir de zéro est toujours utilisé. Par exemple, le formatage de 34,5 avec «##» entraînerait 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 format, alors 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 qui sont toujours présents dans la chaîne de résultat.
Le spécificateur "00" provoque l'arrondi de la valeur au chiffre le plus proche précédant la décimale, où l'arrondi à partir de zéro est toujours utilisé. Par exemple, le formatage de 34,5 avec «00» donnerait la valeur 35.
Essaye ça 0.ToString("#,##; #,##;0")
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.
Utilisez-le comme ceci:
0.ToString("#0.##")
0
après #
veillera à définir la valeur de sortie sur 0 si la valeur est 0 sinon elle affichera la valeur. Alors 0.0.ToString("#0.##")=0.00
et10.ToString("#.##")=10.00