Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Integer-Typ (Integer)

PHP-Integer-Typ (Integer)

伊谢尔伦
伊谢尔伦Original
2016-11-24 14:06:091677Durchsuche

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

Syntax

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

Die binäre Darstellung von Ganzzahlen ist seit PHP 5.4.0 verfügbar.

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 #1 Integer-Literalausdruck

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

Die formale Beschreibung von Integer 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
| 🎜>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

Ganzzahlüberlauf

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>
Wenn eine bestimmte Zahl den Bereich einer Ganzzahl überschreitet, wird sie als Gleitkommazahl 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

Beispiel Nr. 4 Ganzzahlüberlauf unter 64-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)
?>

Es gibt keine Ganzzahldivisionsoperation im PHP-Symbol. 1/2 ergibt Float 0,5. Der Wert kann in eine ganze Zahl umgewandelt werden, wobei der Bruchteil verworfen wird, oder zur besseren Rundung kann die Funktion „round()“ verwendet werden.

<?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)
?>

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 eine Umwandlung jedoch nicht erforderlich, da der Wert automatisch konvertiert wird, wenn ein Operator, eine Funktion oder eine Flusssteuerung einen ganzzahligen Parameter erfordert. 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 Gleitkomma

Bei der Konvertierung von Gleitkomma in Ganzzahl 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.

Siehe Warnung zur Gleitkommagenauigkeit.

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>
Aus String konvertieren

Siehe String in numerischen Wert konvertieren.

Konvertierung von anderen Typen

Achtung

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.

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
Vorheriger Artikel:PHP-Gleitkommatyp (Float)Nächster Artikel:PHP-Gleitkommatyp (Float)