JavaScript parseInt 检测溢出

4

如何使用parseInt方法在解析字符串时检测溢出/下溢?

我想到的方法是将Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER转换为字符串,然后检查要检查的字符串是否在此范围内。


2
请检查以下代码:var num = parseInt(str,10); if( num > Number.MAX_SAFE_INTEGER || num < Number.MIN_SAFE_INTEGER) alert("Overflow/Underflow!"); 如果数字超出了安全范围,将会弹出“溢出/下溢”警告。 - Niet the Dark Absol
展示一些样例或代码。 - Kalu Singh Rao
2个回答

3
根据 MDNNumber.MIN_SAFE_INTEGER常量表示JavaScript中的最小安全整数(-(2 ^ 53-1)),Number.MAX_SAFE_INTEGER常量表示JavaScript中的最大安全整数(2 ^ 53-1)。因此这将起作用。
var str = '00000010323245498540985049580495849058043';
var num = parseInt(str,10); 
if( num > Number.MAX_SAFE_INTEGER) {
 alert("Overflow!"); 
}

这是小提琴。

https://jsfiddle.net/Refatrafi/91rcnoru/2/


1

您需要使用Number.isSafeInteger()函数。

另外,最大整数限制为2^53 - 1

此外,您可以将数据存储在浮点数中,这样可以完全避免问题。如果您的应用程序需要了解溢出条件,请发布问题陈述,可能有更好的方法来处理它。


2
注意:这是仅限于ES6的函数,尽管在MDN页面上有一个polyfill。 - Alnitak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接