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

Compare duration an return a percentage of matching

本文关键字:百分比 返回 持续时间 比较      更新时间:2023-09-26

我需要比较两个持续时间并生成匹配的百分比。

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

有一个8%的容忍度,这意味着第二个持续时间可以比可信的持续时间多8%或少8%。

如果duration2> duration1 - 8% &&如果持续时间2 <持续时间1>

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

你知道怎么做吗?

谢谢!

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");
}

因为:

  • 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