Heim >Backend-Entwicklung >Python-Tutorial >Wie konvertiert man Zahlenbereiche unter Beibehaltung der Verhältnisse?

Wie konvertiert man Zahlenbereiche unter Beibehaltung der Verhältnisse?

Barbara Streisand
Barbara StreisandOriginal
2024-11-07 21:17:02971Durchsuche

How to Convert Number Ranges While Preserving Ratios?

Konvertieren von Zahlenbereichen unter Beibehaltung von Verhältnissen

Angesichts einer Reihe von Werten, die in einen anderen Bereich umgewandelt werden müssen, unter Beibehaltung ihrer relativen Verhältnisse, haben wir Präsentieren Sie einen allgemeinen Algorithmus und seine Python-Implementierung.

Algorithmus:

Um einen Wert aus einem alten Bereich (OldMin, OldMax) in einen neuen Bereich (NewMin, NewMax) umzuwandeln ) unter Beibehaltung des Verhältnisses:

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

Oder lesbarer:

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

Wenn der alte Bereich eine Nullspanne hat (OldMin = OldMax), wird die Berechnung wie folgt geändert:

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

NewValue = NewMin

else
{

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

}
``

In diesem Szenario , NewMin ist die Standardauswahl für den neuen Wert, aber auch andere Optionen wie NewMax oder ihr Durchschnitt könnten kontextbezogen geeignet sein.

Python-Implementierung:

``
def convert_range(old_value, old_min, old_max, new_min, new_max):
"""Konvertiert einen Wert von einem Bereich in einen anderen unter Beibehaltung des Verhältnisses."""
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
``

Das obige ist der detaillierte Inhalt vonWie konvertiert man Zahlenbereiche unter Beibehaltung der Verhältnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn