比较持续时间和返回匹配百分比

时间:2015-09-16 15:39:18

标签: javascript node.js algorithm compare percentage

我需要比较两个持续时间并生成一定比例的匹配。

例如,我有一个可信任的持续时间,第二个持续时间需要与第一个持续时间进行比较。

容差为8%,这意味着第二个持续时间比可信任的持续时间长8%或更长。

如果duration2>持续时间1 - 8%&&如果duration2<持续时间1 + 8%     返回100%

最后我的函数必须返回两个持续时间之间匹配的百分比。

你知道怎么做吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

由于:

  • 100%的价值 - > 1 *值
  • 100% - 价值的8% - > 92%的价值 - > 0.92 *值
  • 100%+ 8%的价值 - >价值的108% - > 1.08 *值

可以执行以下操作

if (duration2 > duration1 * 0.92 && duration2 < duration1 * 1.08) {
    return 1; // if inside -8% +8% returns 100%
} else {
   // If not in the -8% or +8% returns percentage
   return Math.abs((duration2 / duration1) - 1); 
}

或者更好,因为你的计算量较少

var distance = Math.abs((duration2 / duration1) - 1); 
if (distance > 0.08) {
    return distance;
}
return 1;

如果您需要绝对百分比或签名百分比,请注意不清楚。可以删除函数Math.abs

,从第一个更改为第二个

答案 1 :(得分:0)

var d1 = 100; // trusted
var d2 = 108; // other
var diff = d2 - d1;
var percent = (diff / d1) * 100;
console.log(percent, "%");
if(Math.abs(percent) > 8) {
    console.log("Ut oh");
} else {
    console.log("In the sweet spot");
}