2016-08-30 8 views
5

Wie erkennt man, ob ein Überlauf/Unterlauf aufgetreten ist, wenn die Ganzzahl aus der Zeichenkette mit der Methode parseInt analysiert wird?javascript parseInt Überlauf erkennen

Der Ansatz, an den ich gedacht habe, besteht darin, Number.MAX_SAFE_INTEGER und Number.MIN_SAFE_INTEGER in string zu konvertieren und zu überprüfen, ob die zu überprüfende Zeichenfolge in diesem Bereich liegt.

+2

es nach dem Check. 'var num = parseInt (str, 10); if (num> Number.MAX_SAFE_INTEGER || num

+0

Beispielbeispiele oder Code anzeigen. – Developer

Antwort

0

Sie benötigen Number.isSafeInteger()

Auch max int Limit 2^53 - 1

ist auch, können Sie speichern Daten in einem Float, auf diese Weise das Problem ganz vermeiden können. Wenn Ihre Anwendung die Überlaufbedingung kennen muss, können Sie die Problemaussage möglicherweise posten, da könnte es eine bessere Möglichkeit geben, sich ihr zu nähern.

+2

Hinweis: Dies ist nur eine ES6-Funktion, obwohl auf der MDN-Seite ein Polyfill vorhanden ist – Alnitak

2

Nach MDNNumber.MIN_SAFE_INTEGER Konstante repräsentiert die minimale sichere ganze Zahl in JavaScript (- (2^53-1)) und Number.MAX_SAFE_INTEGER Konstante, die die maximale sichere ganze Zahl in JavaScript darstellt (2^53-1). So wird es funktionieren

var str = '00000010323245498540985049580495849058043'; 
var num = parseInt(str,10); 
if(num > Number.MAX_SAFE_INTEGER) { 
alert("Overflow!"); 
} 

Hier ist die Geige

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