Heim > 类库下载 > PHP类库 > Integer-Integer-Typ

Integer-Integer-Typ

高洛峰
Freigeben: 2016-10-20 15:02:13
Original
1484 Leute haben es durchsucht

Ganzzahlige Ganzzahl


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


Siehe:

Ganzzahl mit beliebiger Länge/GMP

Gleitkommatyp

Mathebibliothek mit beliebiger Präzision/BCMath

Syntax


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


Binäre Darstellung von Ganzzahlen verfügbar seit PHP 5.4.0.


Um den Oktalausdruck zu verwenden, muss 0 (Null) vor der Zahl hinzugefügt werden. Um einen hexadezimalen Ausdruck zu verwenden, muss der Zahl 0x vorangestellt werden. Um die binäre Darstellung zu verwenden, muss 0b vor der Zahl hinzugefügt werden.


Beispiel #1 Ganzzahliger Literalausdruck

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


Die formale Beschreibung der 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
|. hexadezimal
|. [ -]?oktal
| Der Maximalwert beträgt ungefähr zwei Milliarden (32-Bit mit Vorzeichen). Der Maximalwert auf einer 64-Bit-Plattform liegt normalerweise bei etwa 9E18. PHP unterstützt keine vorzeichenlosen Ganzzahlen. Die Wortlänge des 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.


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

Integer-Integer-Typ

Beispiel #2 Seltsame Dinge über Oktalzahlen


<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>
Nach dem Login kopieren

Ganzzahlüberlauf


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 #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)
?>  
Example #4 64 位系统下的整数溢出
<?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)
?>
Nach dem Login kopieren

In PHP gibt es keinen ganzzahligen Divisionsoperator. 1/2 ergibt einen Float von 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
var_dump(25/7);         // float(3.5714285714286) 
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4) 
?>
Nach dem Login kopieren

Konvertierung in Ganzzahltyp


erforderlich 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 eine Ganzzahl umzuwandeln.

Siehe: Diskriminierung der Typkonvertierung.


Konvertierung vom Booleschen Wert


FALSE ergibt 0 (null), TRUE ergibt 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 auf 64-Bit Plattformen) = 2^63), das Ergebnis ist undefiniert, da die Genauigkeit nicht ausreicht, um ein exaktes ganzzahliges Ergebnis zu liefern. In diesem Fall gibt es keine Warnung, nicht einmal eine Benachrichtigung!


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

Integer-Integer-Typ

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>
Nach dem Login kopieren

Siehe Warnung zur Gleitkommagenauigkeit.


Aus Zeichenfolge konvertieren


Siehe Zeichenfolge in numerischen Wert konvertieren.


Von anderen Typen konvertieren


Vorsicht 


Konvertierungsverhalten von anderen Typen in Ganzzahlen ist nicht definiert. Verlassen Sie sich nicht auf bestehende Verhaltensweisen, da diese sich ohne Vorankündigung ändern können.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage