Voici comment je le comprends:
Quel pourcentage x
se situe dans une fourchette
Supposons que vous ayez une plage de 0
à 100
. Étant donné un nombre arbitraire de cette plage, dans quel "pourcentage" de cette plage se situe-t-il? Cela devrait être assez simple, 0
serait 0%
, 50
serait 50%
et 100
serait 100%
.
Maintenant, si votre gamme était 20
à 100
? Nous ne pouvons pas appliquer la même logique que ci-dessus (diviser par 100) car:
20 / 100
ne nous donne pas 0
( 20
devrait être 0%
maintenant). Cela devrait être simple à corriger, il suffit de faire le numérateur 0
pour le cas de 20
. Nous pouvons le faire en soustrayant:
(20 - 20) / 100
Cependant, cela ne fonctionne 100
plus car:
(100 - 20) / 100
ne nous donne pas 100%
. Encore une fois, nous pouvons résoudre ce problème en soustrayant également le dénominateur:
(100 - 20) / (100 - 20)
Une équation plus généralisée pour découvrir ce que% x
se situe dans une fourchette serait:
(x - MIN) / (MAX - MIN)
Ajuster la plage à une autre plage
Maintenant que nous savons quel pourcentage se trouve un nombre dans une plage, nous pouvons l'appliquer pour mapper le nombre à une autre plage. Voyons un exemple.
old range = [200, 1000]
new range = [10, 20]
Si nous avons un nombre dans l'ancienne plage, quel serait le nombre dans la nouvelle plage? Disons que le nombre est 400
. Tout d'abord, déterminez quel pourcentage se 400
situe dans l'ancienne fourchette. Nous pouvons appliquer notre équation ci-dessus.
(400 - 200) / (1000 - 200) = 0.25
Donc, 400
se situe dans 25%
l'ancienne gamme. Nous avons juste besoin de déterminer le numéro 25%
de la nouvelle gamme. Pensez à ce que 50%
de [0, 20]
est. Ce serait 10
bien? Comment êtes-vous arrivé à cette réponse? Eh bien, nous pouvons simplement faire:
20 * 0.5 = 10
Mais qu'en est-il de [10, 20]
? Nous devons tout changer 10
maintenant. par exemple:
((20 - 10) * 0.5) + 10
une formule plus généralisée serait:
((MAX - MIN) * PERCENT) + MIN
Pour l'exemple original de ce 25%
de [10, 20]
est:
((20 - 10) * 0.25) + 10 = 12.5
Ainsi, 400
dans la plage [200, 1000]
correspondrait à 12.5
la plage[10, 20]
TLDR
Pour mapper x
de l'ancienne plage vers la nouvelle plage:
OLD PERCENT = (x - OLD MIN) / (OLD MAX - OLD MIN)
NEW X = ((NEW MAX - NEW MIN) * OLD PERCENT) + NEW MIN