PHP 基础教程
PHP 高级教程
PHP & MySQL DATABASE
PHP 示例
PHP 参考手册

PHP 数学运算

在本教程中,您将学习如何在 PHP 中执行数学运算。

执行数学运算

PHP 有几个内置函数可以帮助您执行从简单的加法或减法到高级计算的任何操作。 您已经在 PHP 运算符 一章中了解了如何执行基本的数学运算。 让我们再看一个例子:

<?php
echo 7 + 3; // 0utputs: 10
echo 7 - 2; // 0utputs: 5
echo 7 * 2; // 0utputs: 14
echo 7 / 2; // 0utputs: 3.5
echo 7 % 2; // 0utputs: 1
?>

每个数学运算都有一定的优先级; 通常乘法和除法在加法和减法之前执行。 但是,括号可以改变这种优先级; 无论操作的优先级如何,括号内的表达式总是首先被计算,如下例所示:

<?php
echo 5 + 4 * 10;         // 0utputs: 45
echo (5 + 4) * 10;       // 0utputs: 90
echo 5 + 4 * 10 / 2;     // 0utputs: 25
echo 8 * 10 / 4 - 2;     // 0utputs: 18
echo 8 * 10 / (4 - 2);   // 0utputs: 40
echo 8 + 10 / 4 - 2;     // 0utputs: 8.5
echo (8 + 10) / (4 - 2); // 0utputs: 9
?>

在下一节中,我们将介绍一些最常用于执行数学运算的内置 PHP 函数。


求一个数的绝对值

可以使用 abs() 函数找到 整数浮点数 的绝对值,如下例所示:

<?php
echo abs(5);    // 0utputs: 5 (integer)
echo abs(-5);   // 0utputs: 5 (integer)
echo abs(4.2);  // 0utputs: 4.2 (double/float)
echo abs(-4.2); // 0utputs: 4.2 (double/float)
?>

如您所见,如果给定数字为负数,则返回的值为正数。 但是,如果数字是正数,这个函数只返回数字。


向上或向下舍入小数值

ceil() 函数可用于将小数值四舍五入到下一个最高整数值,而 floor() 函数可用于将小数值向下舍入到下一个最低整数值,如图所示 在以下示例中:

<?php
// 向上舍入分数
echo ceil(4.2);    // 0utputs: 5
echo ceil(9.99);   // 0utputs: 10
echo ceil(-5.18);  // 0utputs: -5
 
// 向下舍入分数
echo floor(4.2);    // 0utputs: 4
echo floor(9.99);   // 0utputs: 9
echo floor(-5.18);  // 0utputs: -6
?>

求一个数的平方根

您可以使用 sqrt() 函数来求正数的平方根。 此函数为负数返回一个特殊值 NAN。 这是一个例子:

<?php
echo sqrt(9);   // 0utputs: 3
echo sqrt(25);  // 0utputs: 5
echo sqrt(10);  // 0utputs: 3.1622776601684
echo sqrt(-16); // 0utputs: NAN
?>

生成随机数

rand() 函数可用于生成随机数。 您可以选择通过传递 min、max 参数来指定范围,如以下示例所示:

<?php
// 生成一些随机数
echo rand() . "<br>";
echo rand() . "<br>";
 
// 生成一些介于 1 到 10(含)之间的随机数
echo rand(1, 10) . "<br>";
echo rand(1, 10) . "<br>";
?>

如果在没有可选 min, max 参数的情况下调用 rand() 函数,它将返回 0getrandmax() 之间的伪随机数。 getrandmax() 函数显示最大可能的随机值,在 Windows 平台上仅为 32767。 因此,如果您需要大于 32767 的范围,您可以简单地指定 minmax 参数。


将十进制数转换为二进制,反之亦然

decbin() 函数用于将十进制数转换为二进制数。 而其对应的 bindec() 函数将数字从二进制转换为十进制。

<?php
// 将十进制转换为二进制
echo decbin(2);    // 0utputs: 10  
echo decbin(12);   // 0utputs: 1100  
echo decbin(100);  // 0utputs: 1100100
 
// 将二进制转换为十进制
echo bindec(10);       // 0utputs: 2 
echo bindec(1100);     // 0utputs: 12  
echo bindec(1100100);  // 0utputs: 100
?>

将十进制数转换为十六进制,反之亦然

dechex() 函数用于将十进制数转换为十六进制表示。 而 hexdec() 函数用于将十六进制字符串转换为十进制数。

<?php
// 将十进制转换为十六进制
echo dechex(255);  // 0utputs: ff
echo dechex(196);  // 0utputs: c4
echo dechex(0);    // 0utputs: 0
 
// 将十六进制转换为十进制
echo hexdec('ff');  // 0utputs: 255
echo hexdec('c4');  // 0utputs: 196
echo hexdec(0);     // 0utputs: 0
?>

将十进制数转换为八进制,反之亦然

decoct() 函数用于将十进制数转换为八进制表示。 而 octdec() 函数用于将八进制数转换为十进制数。

<?php
// 将十进制转换为八进制
echo decoct(12);   // 0utputs: 14
echo decoct(256);  // 0utputs: 400
echo decoct(77);   // 0utputs: 115
 
// 八进制转十进制
echo octdec('14');   // 0utputs: 12
echo octdec('400');  // 0utputs: 256
echo octdec('115');  // 0utputs: 77
?>

将数字从一个基本系统转换为另一个

base_convert() 函数可用于将数字从一个基本系统转换为另一个基本系统。 例如,您可以将十进制 (base 10) 转换为二进制 (base 2),将十六进制 (base 16) 转换为八进制 ( base 8)、八进制转十六进制、十六进制转十进制等。

此函数接受三个参数:要转换的数字、当前所在的基数以及要转换到的基数。 基本语法如下:

base_convert(number, frombase, tobase);

这里,数字可以是整数,也可以是表示整数的字符串。 frombasetobase 都必须介于 2 和 36 之间,包括 2 和 36。 基数大于 10 的数字将用字母 a-z 表示,其中 a 表示 10,b 表示 11,z 表示 35。下面是一个简单的例子来展示这个函数是如何工作的:

<?php
// 十进制转二进制
echo base_convert('12', 10, 2);  // 0utputs: 1100
// 将二进制转换为十进制
echo base_convert('1100', 2, 10);  // 0utputs: 12
 
// 将十进制转换为十六进制
echo base_convert('10889592', 10, 16);  // 0utputs: a62978
// 将十六进制转换为十进制
echo base_convert('a62978', 16, 10);  // 0utputs: 10889592
 
// 将十进制转换为八进制
echo base_convert('82', 10, 8);  // 0utputs: 122
// 八进制转十进制
echo base_convert('122', 8, 10);  // 0utputs: 82
 
// 将十六进制转换为八进制
echo base_convert('c2c6a8', 16, 8);  // 0utputs: 60543250
// 八进制转十六进制
echo base_convert('60543250', 8, 16);  // 0utputs: c2c6a8
 
// 将八进制转换为二进制
echo base_convert('42', 8, 2);  // 0utputs: 100010
// 将二进制转换为八进制
echo base_convert('100010', 2, 8);  // 0utputs: 42
 
// 将十六进制转换为二进制
echo base_convert('abc', 16, 2);  // 0utputs: 101010111100
// 将二进制转换为十六进制
echo base_convert('101010111100', 2, 16);  // 0utputs: abc
?>

注意: base_convert() 函数将始终返回一个字符串值。 如果返回值以 10 为底,则结果字符串可用作计算中的数字字符串,PHP 将在执行计算时将其转换为数字。

Advertisements