Si vous avez une bonne raison de mettre de côté le formatage dépendant de la culture et d'obtenir un contrôle explicite sur la présence ou non d'un espace entre la valeur et le "%", et sur le fait que le "%" soit en tête ou en queue, vous pouvez utiliser la fonction NumberFormatInfo's Modèle de pourcentage de positivité y PercentNegativePattern propriétés.
Par exemple, pour obtenir une valeur décimale avec un "%" à la fin et sans espace entre la valeur et le "%" :
myValue.ToString("P2", new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 });
Exemple plus complet :
using System.Globalization;
...
decimal myValue = -0.123m;
NumberFormatInfo percentageFormat = new NumberFormatInfo { PercentPositivePattern = 1, PercentNegativePattern = 1 };
string formattedValue = myValue.ToString("P2", percentageFormat); // "-12.30%" (in en-us)