在保留比率的同时转换数字范围
给定需要转换为另一个范围的一系列值,保持它们的相对比率,我们展示一个通用算法及其 Python 实现。
算法:
将值从旧范围 (OldMin, OldMax) 转换为新范围 (NewMin, NewMax) )同时保持比率:
``
NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) NewMin
``
或更易读:
``
OldRange = (OldMax - OldMin)
NewRange = (NewMax - NewMin)
NewValue = (((OldValue - OldMin) * NewRange) / OldRange) NewMin
``
如果旧范围的跨度为零 (OldMin = OldMax),则计算将修改为:
``
OldRange = (OldMax - OldMin)
if (OldRange == 0)
NewValue = NewMin
else
{
NewRange = (NewMax - NewMin) NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
}
``
在这种情况下,NewMin 是新值的默认选择,但其他选项(如 NewMax 或其平均值)也可能适合上下文。
Python 实现:
``
def Convert_range(old_value, old_min, old_max, new_min, new_max):
"""将值从一个范围转换为另一个范围,同时保留比例。"""
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
``
以上是如何在保留比率的同时转换数字范围?的详细内容。更多信息请关注PHP中文网其他相关文章!