Question

Je suis en train d'utiliser String.Format ( « {0: c} », somevalue) en C #, mais je suis un moment difficile de trouver comment configurer la sortie pour répondre à mes besoins. Voici mes besoins:

  1. 0 sorties à vide
  2. 1,00 sorties à 1,00 $
  3. 10.00 sorties à $ 10.00
  4. 100,00 sorties à 100,00 $
  5. 1000.00 sorties à 1,000.00 $

J'ai essayé String.Format ( « {0: c} », somevalue) mais pour zéro les valeurs qu'il émet 0,00 $, ce qui est pas ce que je veux. J'ai aussi essayé String.Format ( "{0: 0,0.00; $ (0,0.00); #}", somevalue), mais pour 1,0 $ il émet 01,00. String.Format ( "{0: 0,00 $; $ (0,00); #}", somevalue) fonctionne pour la plupart des cas, mais quand somevalue est 1000,00 la sortie est 1000,00 $.

Y at-il un format qui conviendra à tous les 5 cas ci-dessus? Tous les documents que j'ai lu que des détails les éléments de base et ne touche pas à ce type de scénario.

Était-ce utile?

La solution

Si vous utilisez

string.Format("{0:$#,##0.00;($#,##0.00);''}", value)

Vous obtiendrez « » pour la valeur zéro et les autres valeurs doivent être correctement formaté trop.

Autres conseils

Essayez quelque chose comme ceci:

String currency = (number == 0) ? String.Empty : number.ToString("c");

En fonction de si vous utilisez toujours le même type de données pour toutes vos valeurs monétaires, vous pouvez écrire une méthode d'extension qui ferait en sorte que votre cas est toujours remplie. Par exemple, si vous utilisez le type décimal:

public static string ToCurrencyString (this decimal value)
{
  if (value == 0)
    return String.Empty;
  return value.ToString ("C");
}

est un grand référence que vous pourriez trouver utile, qui résume ces données: http: //blog.stevex .net / string mise en forme en csharp /

Les formats monétaires « C » sont bien jusqu'à ce que vous avez besoin d'un vide pour 0. Voici deux façons, on mentionné ci-dessus, similaires à ceux que j'utiliser qui vous donnent le blanc pour 0:

// one way
string.Format("{0:$#,##0.00;($#,##0.00);''}", somevalue)

// another way
somevalue.ToString("$#,##0.00;($#,##0.00);''")

La seconde technique se sent plus "fluent", si vous aimez ce style de code (comme je le fais).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top