简单的问题,如何限制大量数字,使其保持在0-100之间。例如:
8976382也将转换为89
我的尝试:
Math.min(Math.max(8976382, 1), 100)
答案 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));