当前位置: 首页 > 知识库问答 >
问题:

给一个细分市场设定一个数字最优雅的方法是什么?

柯乐池
2023-03-14

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

换句话说,我需要一个钳制函数:

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

有人能想出一个更具可读性的版本吗?

共有3个答案

周楷
2023-03-14

有人建议在内置的Math对象中添加一个附加项来实现这一点:

Math.clamp(x, lower, upper)

但是请注意,从今天开始,这是第一阶段的提议。在它得到广泛支持之前(这是不保证的),您可以使用多边形填充物。

江浩慨
2023-03-14

一个不太面向数学的方法,但也应该工作,这样,

js prettyprint-override">function clamp(num, min, max) {
  return num <= min 
    ? min 
    : num >= max 
      ? max 
      : num
}

谷梁永年
2023-03-14

你做这件事的方式很标准。您可以定义一个实用程序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);
};

(尽管扩展语言内置程序通常不被允许)

 类似资料:
  • 问题内容: 有没有比这更好,更优雅(和/或更快)的方式 …? 编辑 :因为我不能选择两个答案,所以我要使用正则表达式,因为a)很优雅,并且b)说“ Jon Skeet解决了问题”是一种重言式,因为Jon Skeet自己就是所有问题的解决方案。 问题答案: 我不认为Java有任何内置功能可以更快,更可靠地完成此操作,但前提是您稍后希望使用Double.valueOf(或类似功能)对其进行解析。 我会

  • 问题内容: 到目前为止,这是我得到的: 这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。 我宁愿这样写: 但是可选:::显然不存在。怎么办? 问题答案: 试试这个: map方法为您提供了一个。然后,该方法将

  • 问题内容: 我一直在使用此功能,但我想知道什么是最有效,最准确的方法。 问题答案: 第0天是上个月的最后一天。因为month构造函数是基于0的,所以效果很好。有点hack,但这基本上就是您减去32的结果。

  • 接受的答案建议使用以下公式,用于在给定的和之间生成一个随机整数,其中和包括在范围内: 但它也说 这仍然是稍微偏向较低的数字...也可以扩展它,这样它就可以消除这种偏向。

  • 本文向大家介绍检查Python中字符串是否为空的最优雅的方法是什么?,包括了检查Python中字符串是否为空的最优雅的方法是什么?的使用技巧和注意事项,需要的朋友参考一下 空字符串是“虚假的”,这意味着它们在布尔上下文中被认为是错误的,因此您只能使用非字符串。   示例 输出结果 这将给出输出: 示例 如果您的字符串可以有空格,并且您仍然希望它的值为false,则可以剥离它并再次检查。例如: 输出

  • 我试着写一个代码,它接受一个介于1和1_000_000之间的整数,并返回一个比相同数字的整数大的最小整数,如果它不存在,则打印0。 举个例子 输入:156 输出165 输入330 输出0 输入27711 输出71127 我的问题是,下面的代码没有为其他输入返回正确的输出。 例如,在输入4231中,输出应该是4312。 我很难找到为每个输入返回正确输出的最佳算法。 TNX提前 }