2009-01-07 3 views
4

Mon application affiche actuellement les nombres négatifs comme -1. Les utilisateurs ont changé les exigences (juste pour un changement!) Et maintenant nous devrons afficher les nombres comme (1). Puis-je activer cela pour l'ensemble de l'application, disons de changer le web.config ou même le CultureInfo de l'application? Y a-t-il un effet secondaire de faire cela puisque nous avons beaucoup de pages qui contiennent des valideurs de nombres?ASP.NET - Numéros négatifs dans la parenthèse

Merci!

+0

BTW - ce n'est pas tout à fait une demande aussi aléatoire que cela puisse paraître. Dans certaines notations comptables, les parens sont standard au lieu de signes négatifs. –

+0

c'est presque standard en comptabilité à show() au lieu de négatif. –

Répondre

6

Pour la monnaie, il est vraiment facile:

String.Format("{0:C}", value) 

Cela utilisera les informations de culture pour le système.

Pour les nombres normaux liés aux données, utilisez Mark Glorie's sample.

MSDN Article

+0

Plus de points pour vous Tom. Nous avons défini le bon CultureInfo en fonction du pays de l'utilisateur et utilisé le modèle "{0: C}", "{0: n}" pour utiliser le format culture pour le système. Merci. –

+0

heureux cela a aidé :) –

0

Vous pouvez toujours écrire votre propre méthode ToString() personnalisée comme méthode d'extension, mais comme vous l'avez mentionné, l'utilisation de CultureInfo est probablement préférable. Jetez un coup d'oeil ici:

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numbernegativepattern.aspx

+0

Une méthode d'extension "surchargée" ToString() ne sera jamais appelée - Le compilateur C# préfère appeler les méthodes d'instance réelles par rapport aux méthodes d'extension, et comme System.Object définit ToString(), vous êtes bloqué. –

3

j'utiliser le formatage String. Apporter une modification à la configuration de l'application pour répondre à une exigence d'interface utilisateur est trop lourd. SteveX a écrit un great blog post sur la mise en forme des chaînes. Il est également compatible avec le balisage (aspx) au lieu de seulement pertinent dans le code.

De son poste:

String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value); 

    This will output “$1,240.00″ if passed 1243.50. It will output the 
    same format but in parentheses if the number is negative, and will 
    output the string “Zero” if the number is zero. 

Ce qui est pas exactement ce que vous voulez, mais il est proche.

+0

mais qu'en est-il lorsque votre application n'a que des écrans qui traitent des calculs et autres, c'est-à-dire une application de comptabilité? Voulez-vous changer cela dans tous les écrans? Si les exigences changent à nouveau? –

+0

Cette application fonctionnera-t-elle dans différents pays? Ensuite, vous devez vous soucier de la localisation, ce qui apporte une nouvelle tournure. Si vous voulez vraiment avoir une place dans votre application qui vous renvoie des chaînes formatées, c'est très bien, utilisez une méthode dans une classe statique. Mais appeler cette méthode du balisage est difficile. – jcollum

+0

Oui, cette application va fonctionner dans différents pays .... Dans le pays A, ils peuvent vouloir utiliser -n mais le pays B, ils veulent (n) .... –

0
String.Format(”{0:f;(f);0”, -1); 
-1

Affichez-vous vos données dans Gridview/Datagrids? Si oui, alors le formatage peut être appliqué par borne-colonne, quelque chose comme:

<asp:BoundField DataFormatString="{##;(##)}"/> 

Cela ne fonctionne avec des nombres entiers cependant ...

+0

Cela ne fonctionne pas - obtenir une erreur sur le formatage. – danyim

0

J'ai la page suivante pour faire la mise en forme bookmarked chaîne: http://idunno.org/archive/2004/14/01/122.aspx

à mi-chemin vers le bas, il donne la réponse:

String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value); 

pour répondre à votre autre question, je ne voudrais pas modifier le app.config pour le rendre g lobal, pour les raisons données dans les autres réponses.

0

Cela fonctionne.

DataFormatString="{0:c0}" 
  • nagative montants en
  • les parenthèses Mille separater - virgule
  • symbole $ devant
1

Vérifiez ce ..Convertit la représentation sous forme de chaîne d'un nombre dans un style spécifié en équivalent décimal.

Questions connexes