Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren Sie den PHP-Datentyp Integer (Integer)

Analysieren Sie den PHP-Datentyp Integer (Integer)

怪我咯
怪我咯Original
2017-04-05 10:39:531883Durchsuche

Eine Ganzzahl ist eine Zahl in der Menge ℤ = {..., -2, -1, 0, 1, 2, ...}.

Syntax

Ganzzahlwerte können dezimal, hexadezimal, oktal oder binär dargestellt werden und können durch ein optionales Symbol (- oder +) vorangestellt werden.

Binär ausgedrückte Ganzzahl verfügbar seit PHP 5.4.0.

Um die oktale Darstellung zu verwenden, muss einer Zahl eine 0 (Null) vorangestellt werden. Um die hexadezimale Darstellung zu verwenden, muss der Zahl 0x vorangestellt werden. Um eine binäre Darstellung zu verwenden, muss der Zahl 0b vorangestellt werden.

Beispiel Nr. 1 GanzzahlTextausdruck

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
?>

Die formale Beschreibung einer Ganzzahl lautet:

Dezimal: [1-9][0 - 9]*
|. 0

hexadezimal: 0[xX][0-9a-fA-F]+

oktal: 0[0-7]+

binär: 0b[01]+

Ganzzahl: [+-]?dezimal
| [+-]?oktal
|. ?binär

Die Wortgröße von Ganzzahlen ist plattformabhängig, obwohl das übliche Maximum etwa zwei Milliarden (32-Bit-vorzeichenbehaftet) beträgt. Der Maximalwert auf 64-Bit-Plattformen liegt normalerweise bei etwa 9E18. PHP unterstützt keine vorzeichenlosen Ganzzahlen. Die Wortlänge eines Integer-Wertes kann durch die

-Konstante PHP_INT_SIZE dargestellt werden. Seit PHP 4.4.0 und PHP 5.0.5 kann der Maximalwert durch die Konstante PHP_INT_MAX dargestellt werden.

Warnung

Wenn eine illegale Zahl an eine Oktalzahl (z. B. 8 oder 9) übergeben wird, werden die restlichen Ziffern ignoriert.

Beispiel #2 Seltsame Dinge über Oktalzahlen

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>
Ganzzahlüberlauf

Wenn eine bestimmte Zahl den Bereich einer Ganzzahl überschreitet, wird sie als

Float interpretiert . Wenn das Ergebnis der Operation den Bereich einer Ganzzahl überschreitet, wird ebenfalls Float zurückgegeben.

Beispiel Nr. 3 Ganzzahlüberlauf unter 32-Bit-System

<?php
$large_number = 2147483647;
var_dump($large_number);                     // int(2147483647)
 
$large_number = 2147483648;
var_dump($large_number);                     // float(2147483648)
 
$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);                     // float(50000000000)
?>
Beispiel Nr. 4 Ganzzahlüberlauf unter 64-Bit-System

<?php
$large_number = 9223372036854775807;
var_dump($large_number);                     // int(9223372036854775807)
 
$large_number = 9223372036854775808;
var_dump($large_number);                     // float(9.2233720368548E+18)
$million = 1000000;
$large_number =  50000000000000 * $million;
var_dump($large_number);                     // float(5.0E+19)
?>
Es gibt keine Ganzzahldivision in PHP

Operator. 1/2 ergibt Float 0,5. Der Wert kann in eine Ganzzahl ohne den Dezimalteil umgewandelt werden oder zur besseren Rundung die Funktion „round()“ verwenden.

In Ganzzahl konvertieren
<?php
var_dump(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>

Um einen Wert explizit in eine Ganzzahl umzuwandeln, verwenden Sie die Umwandlung (int) oder (integer). In den meisten Fällen ist jedoch keine Umwandlung erforderlich, denn wenn ein Operator, eine Funktion oder eine

Flusskontrolle

einen ganzzahligen Parameter erfordert, wird der Wert automatisch konvertiert. Sie können auch die Funktion intval() verwenden, um einen Wert in einen Ganzzahltyp umzuwandeln. Siehe:

Diskriminierung der Typkonvertierung

. Konvertierung von einem booleschen Wert

FALSE ergibt 0 (Null), TRUE erzeugt 1 (Eins).

Konvertierung von

Float

Bei der Konvertierung von einer Gleitkommazahl in eine ganze Zahl wird abgerundet.

Wenn die Gleitkommazahl den Ganzzahlbereich überschreitet (normalerweise +/- 2,15e+9 = 2^31 auf 32-Bit-Plattformen, +/- 9,22e+18 = 2^63 auf 64-Bit-Plattformen). ) ist das Ergebnis undefiniert, da die Genauigkeit nicht ausreicht, um ein exaktes ganzzahliges Ergebnis zu liefern. In diesem Fall gibt es keine Warnung, nicht einmal eine Benachrichtigung!

Warnung

Wechseln Sie niemals einen unbekannten Bruch in eine ganze Zahl um, da dies manchmal zu unvorhersehbaren Ergebnissen führen kann.

Konvertierung von anderen Typen in Ganzzahl ist nicht definiert. Verlassen Sie sich nicht auf bestehende Verhaltensweisen, da diese sich ohne Vorankündigung ändern können.
<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>

Das obige ist der detaillierte Inhalt vonAnalysieren Sie den PHP-Datentyp Integer (Integer). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn