首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >极限大数

极限大数
EN

Stack Overflow用户
提问于 2015-05-11 03:37:51
回答 5查看 124关注 0票数 1

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

8976382也会转换89

我的尝试:

代码语言:javascript
运行
复制
Math.min(Math.max(8976382, 1), 100)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-05-11 03:44:51

您所拥有的( min/max方法)不是要将8976382转换为89,而是将其转换为100

一个简单的算法(对于正数,并且假设范围的上限是排他性的,所以它包含了0..99 )将是:

代码语言:javascript
运行
复制
while num >= 100:
    num = int(num / 10)

这应该可以很容易地转换为任何过程语言,例如Javascript:

代码语言:javascript
运行
复制
var num = 8976382;
while (num >= 100) {
    num = Math.floor(num / 10);
}
alert(num);

这使您可以根据请求获得89

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

代码语言:javascript
运行
复制
var num = 8976382;
num = ("" + num).substr(0,2);
alert(num);

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

票数 2
EN

Stack Overflow用户

发布于 2015-05-11 04:18:53

试试这个:

代码语言:javascript
运行
复制
+(8976382 + "").slice(0,2);
票数 2
EN

Stack Overflow用户

发布于 2015-05-11 04:10:10

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

代码语言:javascript
运行
复制
var num = 8976382;
var result = ("" + num).substr(0,2);

// Output => "89"

即使你只有一位数,这也是可行的。可以这样说:

代码语言:javascript
运行
复制
var num = 3;
var result = ("" + 3).substr(0, 2);

// Output => "3"

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

代码语言:javascript
运行
复制
var num = 8976382;
var result = +("" + 8976382).substr(0,2);

// Output => 89

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30159297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档