Maison  >  Article  >  développement back-end  >  Comment convertir des plages de nombres tout en préservant les ratios ?

Comment convertir des plages de nombres tout en préservant les ratios ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-07 21:17:02934parcourir

How to Convert Number Ranges While Preserving Ratios?

Conversion de plages de nombres tout en préservant les ratios

Étant donné une plage de valeurs qui doit être transformée en une autre plage, en conservant leurs ratios relatifs, nous présenter un algorithme général et son implémentation Python.

Algorithme :

Pour convertir une valeur d'une ancienne plage (OldMin, OldMax) vers une nouvelle plage (NewMin, NewMax ) tout en conservant le ratio :

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

Ou de manière plus lisible :

``
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) NewMin
``

Si l'ancienne plage a une étendue nulle (OldMin = OldMax), le calcul est modifié en :

``
OldRange = (OldMax - OldMin)
if (OldRange == 0)

NewValue = NewMin

else
{

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

}
``

Dans ce scénario , NewMin est le choix par défaut pour la nouvelle valeur, mais d'autres options comme NewMax ou leur moyenne peuvent également être contextuellement appropriées.

Implémentation Python :

``
def convert_range(old_value, old_min, old_max, new_min, new_max):
"""Convertit une valeur d'une plage à une autre tout en préservant le rapport."""
old_range = old_max - old_min
if old_range = = 0 :

return new_min

new_range = new_max - new_min
return (((old_value - old_min) * new_range) / old_range) new_min
``

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