简单的问题,我如何限制一个大的数字,使它保持在0-100之间。例如:
8976382也会转换89
我的尝试:
Math.min(Math.max(8976382, 1), 100)发布于 2015-05-11 03:44:51
您所拥有的( 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开头的字符串。
发布于 2015-05-11 04:18:53
试试这个:
+(8976382 + "").slice(0,2);发布于 2015-05-11 04:10:10
似乎你只需要一个数字的前两位数(不包括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)。
https://stackoverflow.com/questions/30159297
复制相似问题