Números PHP
Neste capítulo, examinaremos detalhadamente os números inteiros, flutuantes e strings numéricas.
Números PHP
Uma coisa a notar sobre o PHP é que ele fornece conversão automática de tipo de dados.
Portanto, se você atribuir um valor inteiro a uma variável, o tipo dessa variável será automaticamente um inteiro. Então, se você atribuir uma string à mesma variável, o tipo mudará para uma string.
Essa conversão automática às vezes pode quebrar seu código.
Inteiros PHP
2, 256, -256, 10358, -179567 são todos inteiros.
Um inteiro é um número sem qualquer parte decimal.
Um tipo de dados inteiro é um número não decimal entre -2147483648 e 2147483647 em sistemas de 32 bits e entre -9223372036854775808 e 9223372036854775807 em sistemas de 64 bits. Um valor maior (ou menor) que este, será armazenado como float, pois excede o limite de um inteiro.
Nota: Outra coisa importante a saber é que mesmo que 4 * 2.5 seja 10, o resultado é armazenado como float, pois um dos operandos é um float (2.5).
Aqui estão algumas regras para números inteiros:
- Um número inteiro deve ter pelo menos um dígito
- Um número inteiro NÃO deve ter um ponto decimal
- Um inteiro pode ser positivo ou negativo
- Os inteiros podem ser especificados em três formatos: decimal (baseado em 10), hexadecimal (baseado em 16 - prefixado com 0x) ou octal (baseado em 8 - prefixado com 0)
O PHP tem as seguintes constantes predefinidas para inteiros:
- PHP_INT_MAX - O maior inteiro suportado
- PHP_INT_MIN - O menor inteiro suportado
- PHP_INT_SIZE - O tamanho de um inteiro em bytes
O PHP possui as seguintes funções para verificar se o tipo de uma variável é inteiro:
- is_int()
- is_integer() - alias de is_int()
- is_long() - alias de is_int()
Exemplo
Verifique se o tipo de uma variável é inteiro:
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>
PHP flutua
Um float é um número com um ponto decimal ou um número na forma exponencial.
2,0, 256,4, 10,358, 7,64E+5, 5,56E-5 são todos floats.
O tipo de dados float geralmente pode armazenar um valor de até 1,7976931348623E+308 (dependente da plataforma) e ter uma precisão máxima de 14 dígitos.
O PHP tem as seguintes constantes predefinidas para floats (do PHP 7.2):
- PHP_FLOAT_MAX - O maior número de ponto flutuante representável
- PHP_FLOAT_MIN - O menor número de ponto flutuante positivo representável
- - PHP_FLOAT_MAX - O menor número de ponto flutuante negativo representável
- PHP_FLOAT_DIG - O número de dígitos decimais que podem ser arredondados para um ponto flutuante e vice-versa sem perda de precisão
- PHP_FLOAT_EPSILON - O menor número positivo representável x, de modo que x + 1.0 != 1.0
O PHP possui as seguintes funções para verificar se o tipo de uma variável é float:
- is_float()
- is_double() - alias de is_float()
Exemplo
Verifique se o tipo de uma variável é float:
<?php
$x = 10.365;
var_dump(is_float($x));
?>
PHP Infinito
Um valor numérico maior que PHP_FLOAT_MAX é considerado infinito.
O PHP possui as seguintes funções para verificar se um valor numérico é finito ou infinito:
No entanto, a função PHP var_dump() retorna o tipo de dados e o valor:
Exemplo
Verifique se um valor numérico é finito ou infinito:
<?php
$x = 1.9e411;
var_dump($x);
?>
PHP NaN
NaN significa Not a Number.
NaN é usado para operações matemáticas impossíveis.
O PHP tem as seguintes funções para verificar se um valor não é um número:
No entanto, a função PHP var_dump() retorna o tipo de dados e o valor:
Exemplo
O cálculo inválido retornará um valor NaN:
<?php
$x = acos(8);
var_dump($x);
?>
Strings Numéricas PHP
A função PHP is_numeric() pode ser usada para descobrir se uma variável é numérica. A função retorna true se a variável for um número ou uma string numérica, caso contrário, false.
Exemplo
Verifique se a variável é numérica:
<?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));
?>
Nota: A partir do PHP 7.0: A função is_numeric() retornará FALSE para strings numéricas em formato hexadecimal (por exemplo, 0xf4c3b00c), pois elas não são mais consideradas como strings numéricas.
PHP Casting Strings e Floats para Integers
Às vezes, você precisa converter um valor numérico em outro tipo de dados.
As funções (int), (integer) ou intval() são frequentemente usadas para converter um valor em um inteiro.
Exemplo
Converta float e string para inteiro:
<?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;
?>