NewValue = (((OldValue - OldMin) * (NewMax - NewMin)) / (OldMax - OldMin)) + NewMin
或者更具可读性:
OldRange = (OldMax - OldMin) NewRange = (NewMax - NewMin) NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin
或者,如果您想保护旧范围为0( OldMin = OldMax )的情况,请执行以下 操作 :
OldRange = (OldMax - OldMin)if (OldRange == 0) NewValue = NewMinelse{ NewRange = (NewMax - NewMin) NewValue = (((OldValue - OldMin) * NewRange) / OldRange) + NewMin}请注意,在这种情况下,我们被迫任意选择一个可能的新范围值。根据上下文,明智的选择可能是:
NewMin( 见样本
),
NewMax或
(NewMin + NewMax) / 2



