小编典典

将数字限制为段的最优雅的方法是什么?

all

假设x和是a数字b。我需要限制x在段的范围内[a, b]

换句话说,我需要一个钳位功能

clamp(x) = max( a, min(x, b) )

任何人都可以想出一个更具可读性的版本吗?


阅读 74

收藏
2022-08-16

共1个答案

小编典典

你这样做的方式很标准。您可以定义一个效用clamp函数:

/**
 * Returns a number whose value is limited to the given range.
 *
 * Example: limit the output of this computation to between 0 and 255
 * (x * 255).clamp(0, 255)
 *
 * @param {Number} min The lower boundary of the output range
 * @param {Number} max The upper boundary of the output range
 * @returns A number in the range [min, max]
 * @type Number
 */
Number.prototype.clamp = function(min, max) {
  return Math.min(Math.max(this, min), max);
};

(尽管扩展语言内置插件通常不被接受)

2022-08-16