PHP 数字

在本章中,我们将深入探讨整数、浮点数和数字字符串。

PHP 数字

在 PHP 中主要有三种数字类型:

  • Integer(整数)
  • Float(浮点数)
  • Number Strings(数字字符串)

此外,PHP 还有另外两种用于数字的数据类型:

  • Infinity(无穷大)
  • NaN(非数字)

当您为变量分配值时,会创建数值类型的变量:

实例

$a = 5;
$b = 5.34;
$c = "25";

如需验证 PHP 中任何对象的类型,请使用 var_dump() 函数:

实例

var_dump($a);
var_dump($b);
var_dump($c);

亲自试一试

PHP 整数

2, 256, -256, 10358, -179567 都是整数。

整数是没有任何小数部分的数字。

在 32 位系统中,整数数据类型是在 -2147483648 和 2147483647 之间的非小数数,在 64 位系统中,是在 -9223372036854775808 和 9223372036854775807 之间的非小数制数。大于(或小于)此范围的值将存储为浮点数,因为它超过了整数的限制。

注意:另一件需要知道的重要事情是,即使 4 * 2.5 等于 10,结果也被存储为浮点数,因为其中一个操作数是浮点数(2.5)。

以下是整数的一些规则:

  • 整数必须至少有一位数字
  • 整数不得有小数点
  • 整数可以是正数或负数
  • 整数可以以三种格式指定:十进制(以 10 为底)、十六进制(以 16 为底 - 前缀为 0x)、八进制(以 8 为底 - 前缀为 0)或二进制(以 2 为底 - 前缀为 0b)

PHP 有以下预定义的整数常量:

  • PHP_INT_MAX - 支持的最大整数
  • PHP_INT_MIN - 支持的最小整数
  • PHP_INT_SIZE - 整数的大小(以字节为单位)

PHP 有以下函数来检查变量的类型是否为整数:

  • is_int()
  • is_integer() - is_int() 的别名
  • is_long() - is_int() 的别名

实例

检查变量的类型是否为整数:

$x = 5985;
var_dump(is_int($x));

$x = 59.85;
var_dump(is_int($x));

亲自试一试

PHP 浮点数

浮点数是具有小数点或以指数形式表示的数字。

2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 都是浮点数。

浮点数数据类型通常可以存储高达 1.7976931348623E+308 的值(取决于平台),并且具有最大14位数的精度。

PHP 有以下预定义的浮点数常量(从 PHP 7.2 开始):

  • PHP_FLOAT_MAX - 可表示的最大浮点数
  • PHP_FLOAT_MIN - 可表示的最小正浮点数
  • PHP_FLOAT_DIG - 可以四舍五入为浮点数并返回而不损失精度的十进制数字的数量
  • PHP_FLOAT_EPSILON - 可表示的最小正数 x,使得 x + 1.0 != 1.0

PHP 有以下函数来检查变量的类型是否为浮点数:

  • is_float()
  • is_double() - is_float() 的别名

实例

检查变量的类型是否为浮点数:

$x = 10.365;
var_dump(is_float($x));

亲自试一试

PHP Infinity

大于 PHP_FLOAT_MAX 的数值被认为是无穷大(infinite)。

PHP 有以下函数来检查数值是否是有限的或无限的:

但是,PHP 的 var_dump() 函数可返回数据类型和值:

实例

检查数值是否有限或无限:

$x = 1.9e411;
var_dump($x);

亲自试一试

PHP NaN

NaN 代表非数字(Not a Number)。

NaN 用于不可能的数学运算。

PHP 有以下函数来检查值是否为非数字:

但是,PHP 的 var_dump() 函数可返回数据类型和值:

实例

无效的计算将返回一个 NaN 值:

$x = acos(8);
var_dump($x);

亲自试一试

PHP 数字字符串

PHP 的 is_numeric() 函数可用于确定变量是否为数字。如果变量是数字或数字字符串,该函数将返回 true,否则返回 false。

实例

检查变量是否为数字:

$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));

亲自试一试

注意:从 PHP 7.0 开始:对于十六进制形式的数字字符串(例如 0xf4c3b00c),is_numeric() 函数将返回 FALSE,因为它们不再被视为数字字符串。

PHP 将字符串和浮点数转换为整数

有时您需要将数值转换为另一种数据类型。

(int)、(integer) 和 intval() 函数通常用于将值转换为整数。

实例

将浮点数和字符串转换为整数:

// 将浮点数转换为整数
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;

echo "<br>";

// 将字符串转换为整数
$x = "23465.768";
$int_cast = (int)$x;
echo $int_cast;

亲自试一试

另请参阅:PHP 类型转换