Javascript 限制大量

Javascript 限制大量,javascript,Javascript,简单的问题是,我如何限制一个大的数字,使其保持在0-100之间。例如: 8976382将转换为89 我的尝试: Math.min(Math.max(8976382, 1), 100) 您拥有的(最小/最大方法)不会将8976382转换为89,而是转换为100 一个简单的算法(无论如何,对于正数,并且假设范围的上限是独占的,所以它是0..99包含在内)是: while num >= 100: num = int(num / 10) 可以轻松转换为任何过程语言,如Javascrip

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

8976382将转换为89

我的尝试:

Math.min(Math.max(8976382, 1), 100)
您拥有的(最小/最大
方法)不会将
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);
var y = 8976382;
var x = y < 100 ? y : parseInt((''+y).substring(0, 2));
这将根据要求为您提供
89

另一个选项是使用子字符串操作获取前两个字符(最多两个)

var num = 8976382;
num = ("" + num).substr(0,2);
alert(num);
如果您想要的范围实际上在两端都是
0..100
,请在第一个解决方案中使用
>
而不是
=
。在这种情况下,子字符串方法会出现问题,因为您必须特别检测以
100
开头的字符串。

您拥有的(
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);
var y = 8976382;
var x = y < 100 ? y : parseInt((''+y).substring(0, 2));
这将根据要求为您提供
89

另一个选项是使用子字符串操作获取前两个字符(最多两个)

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

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

看起来,当数字大于100时,您需要该数字的前两位数字

所以我会在Javascript中这样做:

var num = 8976382;
while (num >= 100) {
    num = Math.floor(num / 10);
}
alert(num);
var y = 8976382;
var x = y < 100 ? y : parseInt((''+y).substring(0, 2));
var y=8976382;
var x=y<100?y:parseInt((''+y).子字符串(0,2));
在Java中是这样的:

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

当某个数字大于100时,您似乎需要该数字的前两位数字

所以我会在Javascript中这样做:

var num = 8976382;
while (num >= 100) {
    num = Math.floor(num / 10);
}
alert(num);
var y = 8976382;
var x = y < 100 ? y : parseInt((''+y).substring(0, 2));
var y=8976382;
var x=y<100?y:parseInt((''+y).子字符串(0,2));
在Java中是这样的:

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

似乎您只需要数字的前两位数字(不包括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

注:如果存在负数的可能性,则考虑将条件添加为<代码>(Num>0)< /C> > < /P> < P>看来,你只需要一个数字的前两个数字(不包括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
注:如果存在负数的可能性,则考虑将条件添加为<代码>(num>0)< /代码> .

试试:

+(8976382 + "").slice(0,2);
试试这个:

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

我认为这个解决方案更好。你也可以做
int(num/Math.pow(10,2))
。我不确定您为什么需要while循环。@Asad,将该表达式应用于
8976382
,它将为您提供
89763
,而不是介于0和100之间。
while
循环的思想是不断减少数字,直到得到
100
或以下。似乎OP只需要前两位数字,他/她可以通过修剪得到。类似这样:
(“”+8976382).substr(0,2)
@Mr_Green,这应该是一个答案而不是一个评论。这样,最好的答案将有望上升到顶部(这是SO的工作方式)。我将添加它作为另一个选项,但是,如果您想让您的评论成为一个答案,请告诉我,我将恢复更改。我认为此解决方案是更好的解决方案。您还可以执行
int(num/Math.pow(10,2))
。我不确定您为什么需要while循环。@Asad,将该表达式应用于
8976382
,它将为您提供
89763
,而不是介于0和100之间。
while
循环的思想是不断减少数字,直到得到
100
或以下。似乎OP只需要前两位数字,他/她可以通过修剪得到。类似这样:
(“”+8976382).substr(0,2)
@Mr_Green,这应该是一个答案而不是一个评论。这样,最好的答案将有望上升到顶部(这是SO的工作方式)。我将添加该选项作为另一个选项,但是,如果您想让您的评论成为一个答案,请让我知道,我将恢复更改。您的大量数字的来源是哪里?这将取决于您希望从一个空间到另一个空间的映射类型。例如,它是一致的、渐近的还是其他的。
8976382%100
似乎工作得很好。这样做有什么问题吗?@Shivam,这将给出最后两位数字(例如,
82
),而不是前两位(例如,
89
)。
(“”+8976382)。substr(0,2)
从哪里来的大数字?这取决于从一个空间到另一个空间的映射类型。例如,它是一致的、渐近的还是其他的。
8976382%100
似乎工作得很好。是