【问题标题】:Compare duration an return a percentage of matching比较持续时间并返回匹配百分比
【发布时间】:2015-09-16 15:39:18
【问题描述】:
我需要比较两个持续时间并生成匹配百分比。
例如,我有一个受信任的持续时间,以及需要与第一个比较的第二个持续时间。
有 8% 的容差,这意味着第二个持续时间可以比受信任的持续时间多或少 8%。
如果持续时间2 > 持续时间1 - 8% && 如果持续时间2
最后我的函数必须返回两个持续时间之间的匹配百分比。
你知道怎么做吗?
谢谢!
【问题讨论】:
标签:
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