128 votes

Mappage d'une plage numérique sur une autre

Les mathématiques n'ont jamais été mon point fort à l'école :(

int input_start = 0;    // The lowest number of the range input.
int input_end = 254;    // The largest number of the range input.
int output_start = 500; // The lowest number of the range output.
int output_end = 5500;  // The largest number of the range output.

int input = 127; // Input value.
int output = 0;

Comment puis-je convertir la valeur d'entrée en la valeur de sortie correspondante de cette plage ?

Par exemple, une valeur d'entrée de "0" correspondrait à une valeur de sortie de "500", une valeur d'entrée de "254" correspondrait à une valeur de sortie de "5500". Je n'arrive pas à comprendre comment calculer une valeur de sortie si une valeur d'entrée est, par exemple, 50 ou 101.

Je suis sûr que c'est simple, mais je n'arrive pas à réfléchir pour l'instant :)

Edit : Je n'ai besoin que de nombres entiers, pas de fractions ou quoi que ce soit d'autre.

5voto

QuantumMechanic Points 7825
output = ((input - input_start)/(input_end - input_start)) * (output_end - output_start) + output_start

Cela permet de déterminer proportionnellement "à quelle distance" de la plage d'entrée se trouve l'entrée. Il applique ensuite cette proportion à la taille de la plage de sortie pour déterminer, en termes absolus, à quelle distance de la plage de sortie la sortie doit se situer. Il ajoute ensuite le début de la plage de sortie pour obtenir le nombre réel de sorties.

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