如何计算第三个值位于两个值范围内的百分比

3

例子:

我正在尝试找出两个值之间的百分比计算方式,第三个值是什么。

例如:范围为-46到195。 值-46将为0%,值195将是范围的100%。这个范围中的值65占多少百分比?

valueMin = -46

valueMax = 195

valueNow = 65

valuePercentage = ?

我尝试过以下算法,但它不起作用:

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%
1个回答

10

把这个问题映射到定义域和值域的问题上,其中定义域是您的最小值和最大值,而值域将从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))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接