我的号码改为0-100,
现在我需要将其转换为20-60范围,
所以当我有0时,它将是20,依此类推......
我该怎么办?
答案 0 :(得分:1)
比例因子为(newMax - newMin) / (prevMax - prevMin)
。您还需要按newMin - prevMin
function generateScaleFunction(prevMin, prevMax, newMin, newMax) {
var offset = newMin - prevMin,
scale = (newMax - newMin) / (prevMax - prevMin);
return function (x) {
return offset + scale * x;
};
};
用法
var fn = generateScaleFunction(0, 100, 20, 60);
fn( 0); // 20
fn( 25); // 30
fn( 50); // 40
fn( 75); // 50
fn(100); // 60
// please note you are not guaranteed an int
fn(1); // 20.4