Maison  >  Article  >  développement back-end  >  Comment conserver le rapport entre les valeurs lors de la conversion de plages de numéros ?

Comment conserver le rapport entre les valeurs lors de la conversion de plages de numéros ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 11:39:03310parcourir

How do I preserve the ratio between values when converting number ranges?

Préserver le ratio lors de la conversion de plages de nombres

Dans le domaine de la manipulation de données, il est souvent nécessaire de convertir les valeurs d'une plage à une autre tout en maintenir leurs ratios relatifs. Cela peut être particulièrement utile lors de la compression de données ou du mappage de valeurs entre différentes échelles.

Considérons la tâche de conversion d'une plage de valeurs de -16 000,00 à 16 000,00 en une plage entière plus gérable de 0 à 100. Nous voulons nous assurer que la conversion préserve le rapport entre les valeurs d'origine.

La clé pour parvenir à la préservation de ce rapport réside dans la formule suivante :

NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin

où :

  • OldValue est la valeur d'origine dans l'ancienne plage
  • OldMin et OldMax sont les valeurs minimales et maximales de l'ancienne plage
  • NewMax et NewMin sont les valeurs maximales et minimales de la nouvelle range

Pour le décomposer davantage :

  • Nous calculons le rapport normalisé de l'OldValue dans l'ancienne plage : (OldValue - OldMin) / (OldMax - OldMin)
  • On multiplie ce ratio par la taille de la nouvelle plage : (NewMax - NewMin)
  • On décale ce résultat par le minimum de la nouvelle plage : NewMin

Cette formule garantit que le rapport entre les valeurs de l'ancienne plage est préservé dans la nouvelle plage.

Par exemple, si OldValue est 8 000,00, OldMin est -16 000,00, OldMax est 16 000,00, NewMax est 100 et NewMin est 0. , NewValue serait calculé comme suit :

NewValue = (((8000.00 - (-16000.00)) * (100 - 0)) / (16000.00 - (-16000.00))) + 0
= (((24000.00) * (100)) / (32000.00)) + 0
= 75.00

Ainsi, 8000,00 dans l'ancienne plage correspond à 75,00 dans la nouvelle plage, en préservant le rapport relatif entre ces valeurs. Cette formule peut être davantage personnalisée pour gérer les cas où l'ancienne plage est nulle ou la nouvelle plage souhaitée ne commence pas à zéro.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn