86 votes

Calcul du pourcentage

Je travaille sur le concept de barre de progression en ASP.NET MVC 2. J'ai une liste déroulante qui contient 10 valeurs. Je veux calculer le pourcentage pour la barre de progression, par exemple 10 valeurs de la liste déroulante et une requête qui renvoie la valeur 2. "20 % complété" devrait être affiché Comment faire ce calcul ?

107voto

Sogger Points 2761

Utilisation de Math.Round() :

int percentComplete = (int)Math.Round((double)(100 * complete) / total);

ou en arrondissant manuellement :

int percentComplete = (int)(0.5f + ((100f * complete) / total));

0 votes

Donc, complete y total devrait être int ou double ? Merci.

0 votes

En fait, cela n'a pas d'importance si vous l'utilisez exactement comme il est écrit ici. La preuve de cette affirmation est un exercice laissé au lecteur :)

1 votes

Vous ne devez jamais utiliser un nombre à virgule flottante (c'est-à-dire un double) pour l'argent

97voto

Nicolas Repiquet Points 4411

(current / maximum) * 100 . Dans votre cas, (2 / 10) * 100 .

0 votes

Merci beaucoup...comment arrondir cela... par exemple ( 2 / 11) * 100 signifie que je dois faire....

1 votes

Utilisez Math.Round et décidez ensuite du nombre de décimales que vous souhaitez :)

1 votes

Transformez-le en un int. (int)((2.0 / 11.0) * 100.0) = 18.

49voto

Habeeb Points 3222

Avec le formatage des chaînes de caractères C#, vous pouvez éviter la multiplication par 100, car le code sera plus court et plus propre, notamment parce qu'il y aura moins de parenthèses et que le code d'arrondi sera évité.

(current / maximum).ToString("0.00%");

// Sortie - 16.67%

14voto

Sonador Points 384

Mathématiquement, pour obtenir le pourcentage de deux nombres :

percentage = (yourNumber / totalNumber) * 100;

Et aussi, pour calculer à partir d'un pourcentage :

number = (percentage / 100) * totalNumber;

12voto

Bronumski Points 5754

Vous pouvez conserver le pourcentage en tant que décimal (value \ total) et ensuite, lorsque vous voulez faire un rendu à un humain, vous pouvez utiliser la fonction Habeeb's respuesta ou en utilisant interpolation de chaînes de caractères vous pourriez avoir quelque chose d'encore plus propre :

var displayPercentage = $"{(decimal)value / total:P}";

ou

//Calculate percentage earlier in code
decimal percentage = (decimal)value / total;
...
//Now render percentage
var displayPercentage = $"{percentage:P}";

2 votes

J'ai eu des problèmes avec toutes les autres méthodes présentées ici, mais celle-ci a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X