Liczby PHP
W tym rozdziale przyjrzymy się szczegółowo liczbom całkowitym, zmiennoprzecinkowym i ciągom liczbowym.
Liczby PHP
Jedną rzeczą, na którą należy zwrócić uwagę w PHP, jest to, że zapewnia automatyczną konwersję typu danych.
Tak więc, jeśli przypiszesz wartość całkowitą do zmiennej, typem tej zmiennej będzie automatycznie liczba całkowita. Następnie, jeśli przypiszesz ciąg do tej samej zmiennej, typ zmieni się na ciąg.
Ta automatyczna konwersja może czasami złamać Twój kod.
Liczby całkowite w PHP
2, 256, -256, 10358, -179567 są liczbami całkowitymi.
Liczba całkowita to liczba bez części dziesiętnej.
Typ danych całkowitych to liczba niedziesiętna z zakresu od -2147483648 do 2147483647 w systemach 32-bitowych oraz od -9223372036854775808 do 9223372036854775807 w systemach 64-bitowych. Wartość większa (lub mniejsza) niż ta będzie przechowywana jako zmiennoprzecinkowa, ponieważ przekracza limit liczby całkowitej.
Uwaga: Inną ważną rzeczą, o której należy wiedzieć, jest to, że nawet jeśli 4 * 2,5 to 10, wynik jest przechowywany jako zmiennoprzecinkowy, ponieważ jeden z operandów jest zmiennoprzecinkowy (2,5).
Oto kilka zasad dotyczących liczb całkowitych:
- Liczba całkowita musi mieć co najmniej jedną cyfrę
- Liczba całkowita NIE może mieć kropki dziesiętnej
- Liczba całkowita może być dodatnia lub ujemna
- Liczby całkowite mogą być podawane w trzech formatach: dziesiętnym (oparte na 10), szesnastkowym (oparte na 16 - z prefiksem 0x) lub ósemkowym (oparte na 8 - z prefiksem 0)
PHP ma następujące predefiniowane stałe dla liczb całkowitych:
- PHP_INT_MAX — Największa obsługiwana liczba całkowita
- PHP_INT_MIN - Najmniejsza obsługiwana liczba całkowita
- PHP_INT_SIZE - Rozmiar liczby całkowitej w bajtach
PHP posiada następujące funkcje sprawdzające, czy typ zmiennej jest liczbą całkowitą:
- is_int()
- is_integer() - alias is_int()
- is_long() - alias is_int()
Przykład
Sprawdź, czy typ zmiennej jest liczbą całkowitą:
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>
Pływaki PHP
Float to liczba z kropką dziesiętną lub liczba w formie wykładniczej.
2,0, 256,4, 10,358, 7,64E+5, 5,56E-5 to wszystkie pływaki.
Typ danych float może zwykle przechowywać wartość do 1.7976931348623E+308 (zależną od platformy) i ma maksymalną precyzję 14 cyfr.
PHP ma następujące predefiniowane stałe dla elementów pływających (z PHP 7.2):
- PHP_FLOAT_MAX - Największa możliwa do przedstawienia liczba zmiennoprzecinkowa
- PHP_FLOAT_MIN - Najmniejsza reprezentowalna dodatnia liczba zmiennoprzecinkowa
- - PHP_FLOAT_MAX - Najmniejsza możliwa do przedstawienia ujemna liczba zmiennoprzecinkowa
- PHP_FLOAT_DIG - Liczba cyfr dziesiętnych, które można zaokrąglić do liczby zmiennoprzecinkowej iz powrotem bez utraty precyzji
- PHP_FLOAT_EPSILON - Najmniejsza reprezentowalna liczba dodatnia x, czyli x + 1.0 != 1.0
PHP posiada następujące funkcje, które sprawdzają, czy typ zmiennej jest zmiennoprzecinkowy:
- is_float()
- is_double() - alias is_float()
Przykład
Sprawdź, czy typ zmiennej jest zmiennoprzecinkowy:
<?php
$x = 10.365;
var_dump(is_float($x));
?>
PHP nieskończoność
Wartość liczbowa większa niż PHP_FLOAT_MAX jest uważana za nieskończoną.
PHP posiada następujące funkcje do sprawdzania, czy wartość liczbowa jest skończona czy nieskończona:
Jednak funkcja PHP var_dump() zwraca typ i wartość danych:
Przykład
Sprawdź, czy wartość liczbowa jest skończona czy nieskończona:
<?php
$x = 1.9e411;
var_dump($x);
?>
PHP NaN
NaN to skrót od Not a Number.
NaN jest używany do niemożliwych operacji matematycznych.
PHP posiada następujące funkcje do sprawdzania, czy wartość nie jest liczbą:
Jednak funkcja PHP var_dump() zwraca typ i wartość danych:
Przykład
Nieprawidłowe obliczenie zwróci wartość NaN:
<?php
$x = acos(8);
var_dump($x);
?>
Ciągi numeryczne PHP
Funkcji PHP is_numeric() można użyć do sprawdzenia, czy zmienna jest liczbowa. Funkcja zwraca prawdę, jeśli zmienna jest liczbą lub ciągiem numerycznym, w przeciwnym razie fałsz.
Przykład
Sprawdź, czy zmienna jest liczbowa:
<?php
$x = 5985;
var_dump(is_numeric($x));
$x = "5985";
var_dump(is_numeric($x));
$x = "59.85" + 100;
var_dump(is_numeric($x));
$x = "Hello";
var_dump(is_numeric($x));
?>
Uwaga: Od PHP 7.0: Funkcja is_numeric() zwróci FALSE dla ciągów numerycznych w postaci szesnastkowej (np. 0xf4c3b00c), ponieważ nie są one już uważane za ciągi numeryczne.
PHP rzucanie ciągów i liczb zmiennoprzecinkowych na liczby całkowite
Czasami trzeba rzutować wartość liczbową na inny typ danych.
Funkcje (int), (integer) lub intval() są często używane do konwersji wartości na liczbę całkowitą.
Przykład
Rzuć liczbę zmiennoprzecinkową i ciąg znaków na liczbę całkowitą:
<?php
// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;
echo "<br>";
// Cast string to int
$x =
"23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>