Question

Il semble que String.Format ne sera pas formater une chaîne en entrée. Est-ce que je fais quelque chose de mal, ou est-ce seulement le comportement natif?

Entrée: 0,37

Cela ne fonctionne pas.

string x = String.Format("{0:P}", myString)

Sortie: 0,37

fait.

string x = String.Format("{0:P}", Convert.ToDecimal(myString))

Sortie: 37,00%

Était-ce utile?

La solution

Je crois que ce comportement est normal pour 'la mise en forme composite.

Votre premier exemple tente d'appliquer des règles de mise en forme numérique à une chaîne. Votre deuxième exemple tente d'appliquer des règles de mise en forme numérique à un nombre qui peut avoir des positions décimales.

Voir cet article sur MSDN pour plus informations.

Autres conseils

L'option de format que vous essayez d'appliquer ne fonctionne que pour les nombres. Il n'y a pas de concept de chaînes intelligentes dans .NET dans lequel le CLR inspecte la chaîne pour un type.

  

Suis-je en train de faire quelque chose de mal, ou est-ce seulement le comportement natif?

Ce comportement est natif. Il est fondamentalement pas le travail de Format pour interpréter l'entrée de chaîne. Format suppose que l'utilisateur fournit les données à droite - dans votre cas, numériques données. Une chaîne est pas numérique, même si elle représente un numéro (ce qui est la distinction très importante dans CS entre une valeur / sémantique et sa représentation / syntaxe!).

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