Javascript数学运算范围数

时间:2014-02-09 14:26:05

标签: javascript math

当我需要将整数限制为最小值和最大值时,我试图解决问题。在我的情况下,它的值可以是0到200,如果你添加它应该添加为开销。所以我想要的是:

var value = 100;
//value - 100  should be 0
//value - 150 should be 150
//value + 150 should be 50

现在我有解决方法如何正确限制顶部(仅当min为0时):

(value - 150) % 200

我明白用if语句可以做到这一点,但我想知道是否可以使用自定义函数更聪明。

2 个答案:

答案 0 :(得分:1)

  

我想知道是否有可能使用自定义功能更聪明。

数学不一定更聪明,但使用额外的函数可以减少编写,更易读和更好的可维护性。要解决负值的问题,请使用:

function mod200(n) {
    return (n % 200 +200) % 200;
}

>>> mod200(100 - 100)
0
>>> mod200(100 - 150)
150
>>> mod200(100 + 150)
50

答案 1 :(得分:-1)

function bound(value, min, max) {
    return Math.min(Math.max(val,min),max);
}

所以在你的情况下,bound(value,0,200);