Besoin d'un custom format de devise à utiliser avec de la Ficelle.Format
Je suis en train d'utiliser des chaînes de caractères.Format("{0:c}", somevalue) en C# mais je suis d'avoir un moment difficile de déterminer comment configurer la sortie pour satisfaire mes besoins. Voici mes besoins:
- 0 sorties à vide
- 1.00 sorties à 1,00 $
- 10.00 sorties à 10,00 $
- 100.00 sorties à 100,00 $
- 1000.00 sorties à 1 000$.00
J'ai essayé de la Chaîne.Format("{0:c}", somevalue), mais pour des valeurs égales à zéro, il renvoie $0.00 qui n'est pas ce que je veux. J'ai aussi essayé de Chaîne.Format("{0:$0,0.00;$(0,0.00);#}", somevalue), mais pour la 1.0 sorties $01.00. Chaîne de caractères.Format("{0:$0.00;$(0.00);#}", somevalue) fonctionne dans la plupart des cas, mais lorsque somevalue est de 1000,00 la sortie est de 1000,00$.
Est-il un format qui s'adapte à tous les 5 cas ci-dessus? L'ensemble de la documentation, j'ai lu que les détails de l'essentiel et de ne pas toucher à ce type de scénario.
OriginalL'auteur Notorious2tall | 2009-02-12
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez
Vous obtiendrez "" pour la valeur zéro et les autres valeurs doivent être correctement formaté.
Andrew réponse en fait trop et si je faisais ça dans le code-behind je serais allé avec sa solution, et même pas essayer de comprendre la Chaîne.Format. Mais je cherchais la solution élégante. Personne ne l'avez lu mon avis sur celui-là. 🙂
+1 de moi.. excellent.. pourriez-vous m'expliquer en peu de détails sur la façon dont cela fonctionne..
Lorsque la valeur est un nombre, le format de la chaîne de {0:A;B;C} vérifie si la valeur est positive, négative ou nulle. Si elle est positive, alors A est utilisé, négatif utilise B et zéro utilise C comme le format.
Cette solution ignore la culture actuelle / nombre de paramètres. Est-il possible de formater les nombres à l'aide de la pertinente paramètres de culture (Système d'.De la mondialisation.CultureInfo.CurrentCulture.NumberFormat) MAIS vide pour les zéros?
OriginalL'auteur DavGarcia
Essayer quelque chose comme cela:
OriginalL'auteur Andrew Hare
En fonction de si vous êtes en utilisant systématiquement le même type de données pour l'ensemble de vos valeurs de devise, vous pourriez écrire une méthode d'extension qui permettrait de faire en sorte que votre cas est toujours satisfaite. Par exemple, si vous utilisez le type décimal:
OriginalL'auteur scwagner
Voici une grande référence de ce que vous pourriez trouver utiles, qui résume ces données: http://blog.stevex.net/string-formatting-in-csharp/
fixe
pas encore fixe
OriginalL'auteur juan
Le "C" de la monnaie formats sont grands, jusqu'à ce que vous avez besoin d'un vide de 0. Voici deux façons, celui qui est mentionné ci-dessus, semblables à celles que j'utilise, qui vous donnent la vierge de 0:
La deuxième technique se sent plus "fluent", si vous aimez ce style de code (comme je le fais).
OriginalL'auteur MEC