Le calcul du Pourcentage en C#
Ce qui me manque ici, tout en essayant de calculer le pourcentage d'achèvement? Mon pourcentage de l'équation semble renvoyer une mauvaise pourcentage.
Int32 counter = 0;
foreach (var vehicle in vehicles)
{
counter += 1;
Int32 percentage = (Int32)((double)counter * vehicles.Count()) / 100;
_worker.ReportProgress(percentage);
if (_worker.CancellationPending)
{
e.Cancel = true;
_worker.ReportProgress(0);
return;
}
}
"Mon pourcentage équation semble renvoyer une mauvaise pourcentage." Ce que les valeurs d'entrée à donner à ce que la valeur de sortie, et à quoi vous attendiez-vous? Pouvez-vous réécrire ce que d'une courte mais complète application console? (Il doit être facile à faire).
Pourquoi êtes-vous en multipliant compteur par le comte et ne divisant pas? Je pense que vous êtes un peu en arrière dans votre formule...
iMortalitySX, vous avez raison. Je m'étais un peu en arrière. 🙂
Pourquoi êtes-vous en multipliant compteur par le comte et ne divisant pas? Je pense que vous êtes un peu en arrière dans votre formule...
iMortalitySX, vous avez raison. Je m'étais un peu en arrière. 🙂
OriginalL'auteur Steven Rogers | 2012-10-19
Vous devez vous connecter pour publier un commentaire.
De travailler les pourcentages que vous devriez faire
Vous faites
Essayez d'utiliser
(counter * 100) /vehicles.Count()
à la place.Remarque: Si vous ne la multiplication par 100 avant la division, il signifie que vous n'avez pas besoin de déconner avec des moulages de flotteurs /double, cependant cela ne signifie pas que tous les pourcentages sont arrondis à la baisse. Si vous voulez plus de précision le pourcentage ensuite moulé à double et ne vous inquiétez pas à propos de la commande.
Si j'ai 1, 4, 1 et j'essaie d'obtenir le pourcentage à l'aide de
Math.Round()
, je finis par obtenir 17%, 67%, 17% pour un total de 101%. Comment pourrais-je résoudre ce problème?OriginalL'auteur Justin
comment sur
comme il est dans la boucle foreach, le Comte est toujours > 0 si le code à l'intérieur de la boucle est exécuté
LOL, vous avez raison, je voulais simplement dire que d'un cas général, que vous devriez vérifier ces.
OriginalL'auteur user287107
Essayez ceci :-
Fonte à flotteur pour éviter la division entière de vous donner un zéro, et vous pouvez ajouter 0,5 pour l'entier de l'arrondissement. L'utilisation de 0,5 f pas de 0,5 pour l'empêcher de s'étendre à double ie
OriginalL'auteur Rahul Tripathi
Vous pouvez également utiliser les Mathématiques.round():
Math.Round()
, je finis par obtenir 17%, 67%, 17% pour un total de 101%. Comment pourrais-je résoudre ce problème?Vous êtes la perte d'informations avant de faire votre somme; vous devez avoir plus de précision avant de vous faire un total ou une autre vous ne pouvez pas attendre de votre calculs ultérieurs à maintenir d'importantes exactitude. par exemple, Dans votre exemple, garder une décimale par l'utilisation des Mathématiques.Round(x,1) entraînera une somme de 100.1 qui seront tour à 100.
OriginalL'auteur Sogger