11
votes

Comment puis-je formater une valeur en pourcentage sans signe de pourcentage?

float f = 0.479f;
Console.WriteLine(f.ToString("p1"));
The output: 47.9 %What should I pass to ToString() in order to remove the percentage sign for output like this:
  47.9
EDIT.  I should have mentioned that I am passing the mask to a 3rd party component that does it's thing with it.  I can't perform any acrobatics with the numbers unfortunately.  It has to be the mask that does the trick.

3 commentaires

Quel est votre 3ème composant avec la chaîne formatée? Est-ce que cela limite votre longueur de texte formatée?


@Rubens parce qu'il fournit simplement une propriété .FormATString qui prend ce masque. Tout le formatage est effectué par le contrôle tiers.


Pouvez-vous créer un nouveau numéroInforformat? Si oui, vérifiez mon poste édité.


4 Réponses :


2
votes

pourrait essayer xxx

ou, si vous voulez ne pas vouloir d'espace, utilisez remplacer ('%', '\ 0')

Edit: Si vous ne pouvez utiliser que la méthode TOSTRING () , vous pouvez créer un objet NumberFormatinfo , définissez le symbole pourcentage pour être vide et le transmettre dans le méthode. ( NumberFormatinfo est dans le System.globalization Espace de noms) e.g. xxx


1 commentaires

Pour les points de mondialisation bonus, utilisez numberformatinfo.currentInfo.percentsymbol plutôt que sur le strict du symbole % . (Je n'ai aucune idée de l'une des cultures .net en fait utiliser un symbole différent, cependant!) Certaines cultures placent également un espace entre le nombre et le symbole % (voir NumberFormatinfo.PerrycositivePattern ) Il peut également vouloir effectuer une garniture après avoir fait cela ou il restera dans un espace de début ou de fuite.



5
votes
Console.WriteLine((f * 100).ToString("0.0"));

0 commentaires

2
votes

Que diriez-vous de ce qui suit? XXX

E.G. F = 0,4792 -> "47,9"

Une liste et des descriptions de format numérique standard sont disponibles ici sur MSDN , au cas où cela vous aidera.


0 commentaires

11
votes

J'aurais dû mention que je suis Passer le masque à une tierce partie composant qui fait c'est chose avec ce. Je ne peux pas effectuer d'acrobaties avec les chiffres malheureusement. Il a être le masque qui fait l'affaire. P>

alors je suppose que vous êtes coincé avec float.tostring (string) code>, et que vous ne pouvez pas modifier uniquement le P1 code> dans F.Tostring ("P1 ") code>. Maintenant c'est un problème délicat. Si vous n'avez pas peur de ne rien briser liée aux changements impliqués, vous pouvez effectuer ce qui suit: p>

le format numérique "P", comme documenté sur msdn , utilise numericformatinfo.percentsymbol code> afin d'écrire le signe"% ". numericformatinfo code> est membre de votre cultureinfo code>. Ce que vous pourriez faire, est cloner votre courrielculture code> et modifier les percentsymbol à "" code> comme les suivants: p>

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            float f = 0.479f;
            Console.WriteLine(f.ToString("p1")); //will write 47.9%

            CultureInfo ci = CultureInfo.CurrentCulture.Clone() as CultureInfo;
            ci.NumberFormat.PercentSymbol = "";            

            System.Threading.Thread.CurrentThread.CurrentCulture = ci;
            Console.WriteLine(f.ToString("p1")); //will write 47.9

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

        }
    }


1 commentaires

+1, semble être une méthode la plus fiable dans le scénario OP; Peut-être qu'il aura besoin de modifier directement la culture actuelle et de restaurer sa valeur par défaut après cet appel de composant tiers.