【问题标题】:Compare duration an return a percentage of matching比较持续时间并返回匹配百分比
【发布时间】:2015-09-16 15:39:18
【问题描述】:

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

例如,我有一个受信任的持续时间,以及需要与第一个比较的第二个持续时间。

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

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

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

你知道怎么做吗?

谢谢!

【问题讨论】:

  • 哪一部分不知道怎么翻译成JavaScript?
  • 如何获得好的匹配率!

标签: javascript node.js algorithm compare percentage


【解决方案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");
}

【讨论】:

    【解决方案2】:

    因为:

    • 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      相关资源
      最近更新 更多