Je dois être capable d'éditer des valeurs de poids qui sont des types d'entiers par des pourcentages.Poids et pourcentages
Par exemple: j'ai obtenu les poids suivants:
Var Weight x 100 y 50 z 50 So z is 25% ,y is 25% and x is 50%
Maintenant, si je veux être en mesure de modifier un poids existant ou d'ajouter un nouveau poids en entrée de pourcentage, comment puis-je faire en sorte que les poids seront toujours des types entiers et que je n'aurai pas besoin d'arrondi. Par exemple, si je veux ajouter un nouveau poids qui sera de 25% du poids total, comment puis-je le calculer? Notez que je peux changer les autres poids (incrément/décrément) afin d'y parvenir.
Mais la condition nécessaire ici est que les poids resteront entiers et que le pourcentage des poids nouveaux/modifiés sera tel que demandé.
Si je ne devais pas faire en sorte que les poids seront entiers alors il était facile, je peux utiliser l'équation suivante:
NewWeight = (Somme * RequestedPerecentage)/(1-RequestedPerecentage)
mais ce n'est pas le cas ...
Vous pouvez afficher les valeurs sous forme tronquée mais maintenir les valeurs dans le code comme flottants, il suffit de convertir la valeur en int lorsque vous affichez la valeur, C#: 'var xValue = (int) x;' –
Oui mais avec cette approche finira par perdre de la précision ... –
"Remarquez que je peux changer les autres poids pour y arriver". Y a-t-il une contrainte particulière sur la façon dont vous pouvez changer les poids? Sinon, le problème est facile. Si vous essayez d'ajouter un poids de X% à la liste, décrémentez tous les poids mais le premier à 0, et augmentez/décrémentez le premier poids à (100-X). Prenant votre premier exemple, le résultat est x = 75, y = 0, z = 0, new_value = 25. – Kevin