我需要比较两个持续时间并生成匹配的百分比。
例如,我有一个可信持续时间,第二个持续时间需要与第一个持续时间进行比较。
有一个8%的容忍度,这意味着第二个持续时间可以比可信的持续时间多8%或少8%。
如果duration2> duration1 - 8% &&如果持续时间2 <持续时间1>持续时间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