Pourquoi le format numérique standard pour les pourcentages comprennent un espace?

StackOverflow https://stackoverflow.com/questions/516549

  •  21-08-2019
  •  | 
  •  

Question

Retour histoire

J'ai quelques valeurs décimales que j'affichons sous forme de chaînes sur une page Web dans le cadre d'une chaîne plus grande. J'ai commencé à l'aide d'un format numérique standard La chaîne à ce sujet. Par exemple.

myDecimal.ToString("P0")

Le 0 après lui indique P Je ne veux pas décimales. Cela fonctionne dans la mesure où il va, dans que mon ouput finit par regarder quelque chose comme:

  

Calculé comme ci-dessus en fonction du taux de cotisation minimale de la société par étapes de 2%

L'espace problème

Je veux vraiment vous débarrasser de cet espace entre le nombre et le signe de pourcentage que dans certains cas, il finit par diviser sur plusieurs lignes. Et, je préfère aussi% à buter au nombre.

Solutions de contournement possibles

1. html / solution css

Je pourrais mettre une étiquette ou un <nobr> autour <span style="white-space: nowrap;">. Mais, cela se sent maladroit, et de toute façon je préfère le% à buter jusqu'au numéro que je pense qu'il semble mieux. C'est la façon dont nous l'écrire dans les rapports dans ce cou des bois, il est donc ce que je veux sur la page Web.

2. chaîne de format personnalisé

Je vais mettre fin à l'aide d'un format numérique personnalisé chaîne, par exemple.

myDecimal.ToString("0%")

La question

est-il plus fréquent d'afficher des pourcentages avec un espace entre le nombre et le signe de pourcentage? Cela me surprend, mais il pourrait être.

Est-il possible de dire la Format numérique standard chaîne Je ne veux pas l'espace?

Y at-il un inconvénient à utiliser Format numérique personnalisé chaîne sur une Format numérique standard chaîne ?

Ok - je l'avoue, qui était plus d'une question -. Crédit supplémentaire si vous répondre à toutes

Était-ce utile?

La solution

Autres conseils

Cela a fonctionné pour moi:

System.Globalization.CultureInfo  newCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.NumberFormat.PercentPositivePattern = 1;  // Avoid putting a space between a number and its percentage
System.Threading.Thread.CurrentThread.CurrentCulture = newCulture;

Pour modifier la valeur par défaut PercentPositivePattern, vous devez créer un nouvel objet CultureInfo et de l'utiliser au lieu de la valeur par défaut, ce qui est probablement « en-us ». (Sinon, vous pouvez spécifier « en-za » comme la culture dans votre web.config, mais je ne recommande pas que pour des raisons évidentes).

Il y a un grand poste sur les ASP Forums expliquant comment faire tout cela . Voir le code écrit par la troisième affiche (m0brien). Je copié son code exact dans ma méthode Page_Load de la page principale, de sorte que je ne dois pas y penser plus.

Bien sûr, remplacer ( » », String.Empty), vous pouvez toujours juste ne String.Format ()., Mais vous devez le faire sur votre site. De plus, honnêtement, où est le plaisir que lorsque vous pourriez retrousser vos manches et jouer avec vos valeurs de la mondialisation ???

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