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

Barbara Streisand
Libérer: 2024-11-07 21:17:02
original
933 Les gens l'ont consulté

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
Copier après la connexion

else
{

NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
Copier après la connexion

}
``

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal