例子:
我正在尝试计算用于找到第三个值的两个值之间的百分比的计算。
示例:范围是 -46 到 195。值 -46 表示 0%,值 195 表示范围的 100%。值 65 占该范围的多少百分比?
值最小值=-46
值最大值=195
现在值=65
值百分比 = ?
我尝试了以下算法,但它不起作用:
const log = (txt) => console.log(txt, 'instead of 100%');
function getValueNowInPercent(valueMin, valueMax, valueNow){
const diff = valueMax - valueMin;
const percent = valueNow / diff * 100;
return percent + '%';
}
let valueMin, valueMax, valueNow;
valueMin = 0; valueNow = 50; valueMax = 100;
log(getValueNowInPercent(valueMin,valueNow,valueMax));
==> 200% instead of 100%
valueMin = -100; valueNow = 0; valueMax = 100;
log(getValueNowInPercent(valueMin,valueNow,valueMax));
==> 100% instead of 100%
valueMin = 0; valueNow = 100; valueMax = 200;
log(getValueNowInPercent(valueMin,valueNow,valueMax));
==> 200% instead of 100%
valueMin = -200; valueNow = 0; valueMax = 200;
log(getValueNowInPercent(valueMin,valueNow,valueMax));
==> 100% instead of 100%
Run Code Online (Sandbox Code Playgroud)
如何将其映射到域范围问题,其中域将是您的最小值和最大值,范围将从 0 到 100
function mapBetween(currentNum, minAllowed, maxAllowed, min, max) {
return (maxAllowed - minAllowed) * (currentNum- min) / (max - min) + minAllowed;
}
console.log (mapBetween(-46,0,100,-46,195))
console.log (mapBetween(195,0,100,-46,195))
console.log (mapBetween(65,0,100,-46,195))
console.log (mapBetween(100,0,100,0,200))
Run Code Online (Sandbox Code Playgroud)