限制大量

时间:2015-05-11 03:37:52

标签: javascript

简单的问题,如何限制大量数字,使其保持在0-100之间。例如:

8976382也将转换为89

我的尝试:

Math.min(Math.max(8976382, 1), 100)

5 个答案:

答案 0 :(得分:2)

您拥有的内容(min/max方法)不会将8976382转换为89,而是转换为100

一个简单的算法(无论如何,对于正数,假设范围的上端是独占的,所以它包括0..99)将是:

while num >= 100:
    num = int(num / 10)

应该可以轻松转换为任何过程语言,例如Javascript:

var num = 8976382;
while (num >= 100) {
    num = Math.floor(num / 10);
}
alert(num);

根据要求为您提供89

另一个选择是使用子字符串操作来获取第一个(最多)两个字符。

var num = 8976382;
num = ("" + num).substr(0,2);
alert(num);

如果您想要的范围实际为0..100两者结束,请在第一个解决方案中使用>而不是>=。在这种情况下,子字符串方法会出现问题,因为您必须特别检测以100开头的字符串。

答案 1 :(得分:2)

试试这个:

+(8976382 + "").slice(0,2);

答案 2 :(得分:1)

您似乎只需要一个数字的前两位数字(不包括100 )。如果是这样,那么您可以使用substr或其他javascript字符串操作方法(如substring)来获取前两位数字。

var num = 8976382;
var result = ("" + num).substr(0,2);

// Output => "89"

即使您只有一位数,这也有效。说:

var num = 3;
var result = ("" + 3).substr(0, 2);

// Output => "3"

稍后,如果您要将该输出字符串转换为数字,请使用parseInt或只需将+添加到上述代码中:

var num = 8976382;
var result = +("" + 8976382).substr(0,2);

// Output => 89

注意:如果有可能出现负数,请考虑将条件添加为if( num > 0)

答案 3 :(得分:0)

x = 8976382;
y = parseInt((x+'').slice(0,2));

答案 4 :(得分:0)

当该数字大于100时,您似乎想要数字的前两位数。

所以我会在Javascript中这样做:

var y = 8976382;
var x = y < 100 ? y : parseInt((''+y).substring(0, 2));

在Java中就像这样:

int y = 8976382;
int x = y < 100 ? y : Integer.parseInt(String.valueOf(y).substring(0, 2));