假设我有一个介于已知最小值和最大值之间的 10 个值的刻度。如何获得最小值和最大值之间的刻度上最接近的值。例子:
min = 0, max = 10, value = 2.75 -> expected: value = 3
min = 5, max = 6, value = 5.12 -> expected: value = 5.1
min = 0, max = 1, value = 0.06 -> expected: value = 0.1
Run Code Online (Sandbox Code Playgroud)
你可以使用这样的东西
function nearest(value, min, max, steps) {
var zerone = Math.round((value - min) * steps / (max - min)) / steps; // bring to 0-1 range
zerone = Math.min(Math.max(zerone, 0), 1) // keep in range in case value is off limits
return zerone * (max - min) + min;
}
console.log(nearest(2.75, 0, 10, 10)); // 3
console.log(nearest(5.12, 5, 6, 10)); // 5.1
console.log(nearest(0.06, 0, 1, 10)); // 0.1Run Code Online (Sandbox Code Playgroud)
演示在http://jsfiddle.net/gaby/4RN37/1/