首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >as3 -使用parseInt()检测超出范围的值

as3 -使用parseInt()检测超出范围的值
EN

Stack Overflow用户
提问于 2011-06-23 09:23:15
回答 3查看 1.2K关注 0票数 0

如果我向parseInt()传递一个表示大于2^31的整数的字符串,如何检测?

如果parseInt()返回NaN,那就太棒了,但它没有。

我可以测试parseInt返回的数字和max int & min int的值。

还有更好的吗?

tia,猎户座

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-24 06:18:10

你可以先把它转换成一个数字,这个数字可以比整数大得多,然后对照int.MAX_VALUE和int.MIN_VALUE对它进行检查,最后将它转换为整数。

代码语言:javascript
复制
var myNumber:Number = Number(myStringOrSomething);
var myInt:int;
if (myNumber <= int.MAX_VALUE && myNumber >= int.MIN_VALUE) {
    // Number is big (or small) enough, cast it as int
    myInt = Math.round(myNumber) as int;
} else {
    // Failed at converting to int
}
票数 0
EN

Stack Overflow用户

发布于 2011-06-23 11:25:04

如果你假设返回值的最大值是4,294,967,295 (uint的最大值),那么你就错了。

函数parseInt返回一个数字&而不是uint。一个数字的最大值是1.79e+308,这个值非常大&但是,如果您的数字大于这个值,函数parseInt将返回NaN。

因此,您可以简单地检查NaN &它应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2011-06-24 01:34:21

我最终测试了NaN的回报,也测试了int.MIN_VALUE,int.MAX_VALUE范围内的回报。

以下是一些示例和结果。(false =无效的int,true =有效的int)

代码语言:javascript
复制
"abcde"      , false //
"0XYZ"       , true  // i wish this wasn't the case, but it is.
" 123 "      , true  //
"NaN"        , false //
"85899345912", false //   2^33 - 1
 "2147483647", true  //   2^31 - 1
 "2147483648", false //   2^31
"-2147483647", true  // -(2^31 - 1)
"-2147483648", true  // -(2^31
"-2147483649", false // -(2^31 + 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6448363

复制
相关文章

相似问题

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