Zusammenfassung
Mir fallen im Moment nur 3 Methoden ein. Wenn den Lesern andere nützliche Methoden einfallen, können Sie diese auch teilen
parseInt
Bit-Operator
Math.floor Math.ceil
Beschreibung
1. parseInt
1. Beispiel
parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")//13 parseInt("070")//ES3为56(八进制) ES5为70 parseInt(070)//ES3和ES5都为56 parseInt(22.5)//22
2. Konvertierungsregeln:
(1). Gemäß Beispiel (1) analysiert parseInt, bis es keine Zahl mehr ist, und stoppt
(2). Gemäß Beispiel (2) ist parseInt beim Parsen einer leeren Zeichenfolge NaN, nicht 0
(3). Gemäß Beispiel (3) kann parseInt hexadezimale Zahlen in dezimale
umwandeln
(4). Gemäß Beispiel (4) ignoriert parseInt Leerzeichen in Zeichenfolgen
3. Nachteile:
(1). Gemäß Beispiel (5) können wir erkennen, dass parseInt beim Konvertieren von Oktalarrays inkompatibel ist. ES3 behandelt 070 als Oktalwert, ES5 behandelt 070 jedoch als Dezimalwert.
(2). Gemäß den Beispielen (6) (7) können wir wissen, dass parseInt die Parameter zuerst in Zeichenfolgen umwandelt und sie dann in Ganzzahlen ausführt
4. Erläuterung: Warum geht es bei der Ausführung von (5) und (6) ausschließlich um die Umwandlung von 070 in eine Ganzzahl, die Ergebnisse sind jedoch unterschiedlich? Dies ist auch der zweite Punkt bei der Lösung von Mängeln.
Weil ich in der offiziellen Dokumentation gesehen habe, dass ein String, wenn er kein String ist, in einen solchen umgewandelt wird. Diese Passage. Das heißt, wenn der Parameter kein String ist, wird er zuerst in einen String und dann in eine Ganzzahl konvertiert. Beispielsweise konvertiert parseInt(070) in Beispiel (6) tatsächlich zuerst 070 „“ oder String(070), um zu erfahren, dass 070 in „56“ umgewandelt wird, da 070 eine Oktalzahl ist. Dann wird es zu parseInt("56") und die endgültige Ganzzahl ist 56. Unabhängig davon, ob Sie ES3 oder ES5 verwenden, sind es 56
2. Bit-Operatoren
1. Beispiel
console.log(0 | "123.45")//123 console.log(0 | 123.45)//123 console.log(0 ^ 123.45)//123 console.log(~~123.45)//123
2. Prinzip: JavaScript hat kein Konzept für Ganzzahlen und alle numerischen Typen sind Gleitkommazahlen mit doppelter Genauigkeit. Bei Verwendung bitweiser Operatoren werden die Operanden zunächst in Ganzzahlen umgewandelt, um Operationen zu erleichtern. Eine XOR-Verknüpfung von 0 mit anderen Werten oder eine bitweise ODER-Verknüpfung ändert den Operationswert
jedoch nicht3. Math.floor und Math.ceil
1. Beispiel
console.log(Math.floor(2.3)//2 console.log(Math.floor(-2.3)//-3 console.log(Math.ceil(2.3)//3 console.log(Math.ceil(-2.3)//-2
2. Die beiden reichen nicht aus: Math.floor erhält die kleinste ganze Zahl, während Math.ceil die größte ganze Zahl erhält. Wenn wir also -2,3 aufrunden, erhalten wir -2, aber wenn wir Math.floor verwenden, erhalten wir -3. Und 2.3 verwendet Math.ceil, um 3 zu erhalten, aber was wir wollen, ist 2.
3. Lösung:
//自行定义一个函数 function getInt(val){ return val>0 ? Math.floor(val):Math.ceil(val); }