Ref/math-Phpdoc专题

abs

绝对值

说明

number abs ( mixed $number )

返回参数 number 的绝对值。

参数

number
要处理的数字值

返回值

number 的绝对值。 如果参数 number 是 <span class="type">float,则返回的类型也是 <span class="type">float,否则返回 <span class="type">integer(因为 float 通常比 integer 有更大的取值范围)。

范例

示例 #1 abs 例子

<?php
$abs = abs(-4.2); // $abs = 4.2; (double/float)
$abs2 = abs(5);   // $abs2 = 5; (integer)
$abs3 = abs(-5);  // $abs3 = 5; (integer)
?>

参见

  • gmp_abs
  • gmp_sign

acos

反余弦

说明

float acos ( float $arg )

返回 arg 的反余弦值,单位是弧度。acoscos 的反函数,它的意思是在 <span class="function">acos 范围里的每个值都是 a==cos(acos(a))

参数

arg
要处理的参数

返回值

arg 的反余弦弧度。

参见

  • cos
  • acosh
  • asin
  • atan

acosh

反双曲余弦

说明

float acosh ( float $arg )

返回 arg 的反双曲余弦值,即,其双曲余弦为 arg 的那个值。

参数

arg
要处理的值

返回值

The inverse hyperbolic cosine of arg

更新日志

版本 说明
5.3.0 This function is now available on all platforms

参见

  • cosh
  • acos
  • asinh
  • atanh

asin

反正弦

说明

float asin ( float $arg )

返回 arg 的反正弦值,单位是弧度。asinsin 的反函数,它的意思是在 <span class="function">asin 范围里的每个值都是 a==sin(asin(a))

参数

arg
待处理的参数

返回值

arg 的反正弦弧度。

参见

  • sin
  • asinh
  • acos
  • atan

asinh

反双曲正弦

说明

float asinh ( float $arg )

返回 arg 的反双曲正弦值,即,其双曲正弦为 arg 的那个值。

参数

arg
要处理的参数

返回值

返回 arg 的反双曲正弦值

更新日志

版本 说明
5.3.0 此函数在所有平台上均可用

参见

  • sinh
  • asin
  • acosh
  • atanh

atan2

两个参数的反正切

说明

float atan2 ( float $y , float $x )

本函数计算两个变量 xy 的反正切值。和计算 y / x 的反正切相似,只除了两个参数的符号是用来确定结果的象限之外。

本函数的结果为弧度,其值在 -PI 和 PI 之间(包括 -PI 和 PI)。

参数

y
Dividend parameter

x
Divisor parameter

返回值

xy 的反正切弧度值。

参见

  • atan

atan

反正切

说明

float atan ( float $arg )

返回 arg 的反正切值,单位是弧度。atantan 的反函数,它的意思是在 <span class="function">atan 范围里的每个值都是 a==tan(atan(a))

参数

arg
要处理的参数

返回值

arg 的反正切弧度。

参见

  • tan
  • atanh
  • asin
  • acos

atanh

反双曲正切

说明

float atanh ( float $arg )

返回 arg 的反双曲正切值,即,其双曲正切为 arg 的那个值。

参数

arg
要处理的参数

返回值

Inverse hyperbolic tangent of arg

更新日志

版本 说明
5.3.0 此函数在所有平台上都可以用了

参见

  • tanh
  • atan
  • asinh
  • acosh

base_convert

在任意进制之间转换数字

说明

string <span class="methodname">base_convert ( <span class="methodparam">string $number , int $frombase , <span class="type">int $tobase )

返回一字符串,包含 numbertobase 进制的表示。number 本身的进制由 frombase 指定。frombasetobase 都只能在 2 和 36 之间(包括 2 和 36)。高于十进制的数字用字母 a-z 表示,例如 a 表示 10,b 表示 11 以及 z 表示 35。

Warning

由于使用内部的 "double" 或 "float" 类型,<span class="function">base_convert 的操作可能会导致大数值中的精度丢失。请参见本手册的 浮点数 章节以便获得更多详细信息。

参数

number
要转换的数字

frombase
The base number is in

tobase
The base to convert number to

返回值

number converted to base tobase

范例

示例 #1 base_convert 例子

<?php
$hexadecimal = 'A37334';
echo base_convert($hexadecimal, 16, 2);
?>

以上例程会输出:

101000110111001100110100

参见

  • intval

bindec

二进制转换为十进制

说明

number bindec ( string $binary_string )

返回 binary_string 参数所表示的二进制数的十进制等价值。

bindec 将一个二进制数转换成 <span class="type">integer,或者出于大小的需要,转换为 <span class="type">float 类型。

bindec 将所有的 binary_string 值解释为无符号整数。这是由于 bindec 函数将其最高有效位视为数量级而非符号位。

参数

binary_string
要转换的二进制字符串

Warning

参数必须为字符串。使用其他数据类型会导致不可预知的结果。

返回值

binary_string 的十进制数值

更新日志

版本 说明
4.1.0 本函数如今可以转换超过程序运行平台中 integer 类型最大值的数,此时其值会返回为 float 类型。

范例

示例 #1 bindec 例子

<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";

echo bindec('111');
?>

以上例程会输出:

51
51
7

示例 #2 bindec 将输入解读为无符号整数

<?php
/*
 * The lesson from this example is in the output
 * rather than the PHP code itself.
 */

$magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2);
p($magnitude_lower - 1);
p($magnitude_lower, 'See the rollover?  Watch it next time around...');

p(PHP_INT_MAX, 'PHP_INT_MAX');
p(~PHP_INT_MAX, 'interpreted to be one more than PHP_INT_MAX');

if (PHP_INT_SIZE == 4) {
    $note = 'interpreted to be the largest unsigned integer';
} else {
    $note = 'interpreted to be the largest unsigned integer
              (18446744073709551615) but skewed by float precision';
}
p(-1, $note);


function p($input, $note = '') {
    echo "input:        $input\n";

    $format = '%0' . (PHP_INT_SIZE * 8) . 'b';
    $bin = sprintf($format, $input);
    echo "binary:       $bin\n";

    ini_set('precision', 20);  // For readability on 64 bit boxes.
    $dec = bindec($bin);
    echo 'bindec():     ' . $dec . "\n";

    if ($note) {
        echo "NOTE:         $note\n";
    }

    echo "\n";
}
?>

以上例程在 32 位机器上的输出:

input:        1073741823
binary:       00111111111111111111111111111111
bindec():     1073741823

input:        1073741824
binary:       01000000000000000000000000000000
bindec():     1073741824
NOTE:         See the rollover?  Watch it next time around...

input:        2147483647
binary:       01111111111111111111111111111111
bindec():     2147483647
NOTE:         PHP_INT_MAX

input:        -2147483648
binary:       10000000000000000000000000000000
bindec():     2147483648
NOTE:         interpreted to be one more than PHP_INT_MAX

input:        -1
binary:       11111111111111111111111111111111
bindec():     4294967295
NOTE:         interpreted to be the largest unsigned integer

以上例程在 64 位机器上的输出:

input:        4611686018427387903
binary:       0011111111111111111111111111111111111111111111111111111111111111
bindec():     4611686018427387903

input:        4611686018427387904
binary:       0100000000000000000000000000000000000000000000000000000000000000
bindec():     4611686018427387904
NOTE:         See the rollover?  Watch it next time around...

input:        9223372036854775807
binary:       0111111111111111111111111111111111111111111111111111111111111111
bindec():     9223372036854775807
NOTE:         PHP_INT_MAX

input:        -9223372036854775808
binary:       1000000000000000000000000000000000000000000000000000000000000000
bindec():     9223372036854775808
NOTE:         interpreted to be one more than PHP_INT_MAX

input:        -1
binary:       1111111111111111111111111111111111111111111111111111111111111111
bindec():     18446744073709551616
NOTE:         interpreted to be the largest unsigned integer
              (18446744073709551615) but skewed by float precision

参见

  • decbin
  • octdec
  • hexdec
  • base_convert

ceil

进一法取整

说明

float ceil ( float $value )

返回不小于 value 的下一个整数,value 如果有小数部分则进一位。

参数

value
要进一法取整的值

返回值

返回不小于 value 的下一个整数。 ceil 返回的类型仍然是 float,因为 <span class="type">float 值的范围通常比 <span class="type">integer 要大。

范例

示例 #1 ceil 例子

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>

参见

  • floor
  • round

cos

余弦

说明

float cos ( float $arg )

cos 返回参数 arg 的余弦值。参数 arg 的单位为弧度。

参数

arg
以弧度表示的角度

返回值

arg的余弦值

范例

示例 #1 cos 例子

<?php

echo cos(M_PI); // -1

?>

参见

  • acos
  • sin
  • tan
  • deg2rad

cosh

双曲余弦

说明

float cosh ( float $arg )

返回 arg 的双曲余弦值,定义为 (exp(arg) + exp(-arg))/2

参数

arg
要处理的参数

返回值

arg 的双曲余弦值。

参见

  • cos
  • acosh
  • sinh
  • cosh

decbin

十进制转换为二进制

说明

string decbin ( int $number )

返回一字符串,包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967295,其结果为 32 个 1 的字符串。

参数

number
Decimal value to convert

Range of inputs on 32-bit machines

positive number

返回值

Binary string representation of number

范例

示例 #1 decbin 例子

<?php
echo decbin(12) . "\n";
echo decbin(26);
?>

以上例程会输出:

1100
11010

参见

  • bindec
  • decoct
  • dechex
  • base_convert
  • printf, using %b, %032b or %064b as the format
  • sprintf, using %b, %032b or %064b as the format

dechex

十进制转换为十六进制

说明

string dechex ( int $number )

返回一字符串,包含有给定 number 参数的十六进制表示。

所能转换的最大数值为十进制的 PHP_INT_MAX * 2 + 1 (或 -1):在 32 位平台上是十进制的 4294967295,其 <span class="function">dechex 的结果为 ffffffff

参数

number
要转换的十进制值

PHP 的 integer 类型是有符号的,但 <span class="function">dechex 处理无符号整数,负正数会以无符号处理。

返回值

number 的16进制表示

范例

示例 #1 dechex 例子

<?php
echo dechex(10) . "\n";
echo dechex(47);
?>

以上例程会输出:

a
2f

示例 #2 大整数的 dechex 例子

<?php
// The output below assumes a 32-bit platform.
// Note that the output is the same for all values.
echo dechex(-1)."\n";
echo dechex(PHP_INT_MAX * 2 + 1)."\n";
echo dechex(pow(2, 32) - 1)."\n";
?>

以上例程会输出:

ffffffff
ffffffff
ffffffff

参见

  • hexdec
  • decbin
  • decoct
  • base_convert

decoct

十进制转换为八进制

说明

string decoct ( int $number )

返回一字符串,包含有给定 number 参数的八进制表示。所能转换的最大数值为十进制的 4294967295,其结果为 "37777777777"。

参数

number
待转换的十进制值

返回值

number 参数八进制表示的字符串。

范例

示例 #1 decoct 范例

<?php
echo decoct(15) . "\n";
echo decoct(264);
?>

以上例程会输出:

17
410

参见

  • octdec
  • decbin
  • dechex
  • base_convert

deg2rad

将角度转换为弧度

说明

float deg2rad ( float $number )

本函数把 number 从角度转换成弧度。

参数

number
以角度为单位的值

返回值

number 等量的弧度值

范例

示例 #1 deg2rad 例子

<?php

echo deg2rad(45); // 0.785398163397
var_dump(deg2rad(45) === M_PI_4); // bool(true)

?>

参见

  • rad2deg

exp

计算 e 的指数

说明

float exp ( float $arg )

返回 earg 次方值。

Note:

用 'e' 作为自然对数的底 2.718282.

参数

arg
要处理的参数

返回值

'e' raised to the power of arg

范例

示例 #1 exp 例子

<?php
echo exp(12) . "\n";
echo exp(5.7);
?>

以上例程会输出:

1.6275E+005
298.87

参见

  • log
  • pow

expm1

返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果

说明

float expm1 ( float $arg )

expm1 返回 'exp(number) - 1',甚至当 number 的值接近零也能计算出准确结果。但是当两个数值趋近于相等的时候, 'exp (number) - 1' 就会变得不太准确。

参数

arg
要处理的参数

返回值

'e' to the power of arg minus one

更新日志

版本 说明
5.3.0 此函数在所有平台上均可用

参见

  • log1p
  • exp

fdiv

Divides two numbers, according to IEEE 754

说明

float fdiv ( float $num1 , float $num2 )

Returns the floating point result of dividing the num1 by the num2. If the num2 is zero, then one of INF, -INF, or NAN will be returned.

Note that in comparisons, NAN will never == or ===, any value, including itself.

参数

num1
The dividend (numerator)

num2
The divisor

返回值

The floating point result of num1/num2

范例

示例 #1 Using fdiv

<?php
var_dump(fdiv(5.7, 1.3)); // float(4.384615384615385)
var_dump(fdiv(4, 2)); // float(2)
var_dump(fdiv(1.0, 0.0)); // float(INF)
var_dump(fdiv(-1.0, 0.0)); // float(-INF)
var_dump(fdiv(0.0, 0.0)); // float(NAN)
?>

参见

  • / - Floating-point division
  • intdiv - Integer division
  • fmod - Modulus

floor

舍去法取整

说明

float floor ( float $value )

返回不大于 value 的最接近的整数,舍去小数部分取整。

参数

value
要取整的数字

返回值

返回不大于 value 的最接近的整数,将 value 的小数部分舍去取整。<span class="function">floor 返回的类型仍然是 <span class="type">float,因为 float 值的范围通常比 integer 要大。

范例

示例 #1 floor 例子

<?php
echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4
?>

参见

  • ceil
  • round

fmod

返回除法的浮点数余数

说明

float fmod ( float $x , float $y )

返回被除数(x)除以除数(y)所得的浮点数余数。余数(r)的定义是:x = i * y + r,其中 i 是整数。如果 y 是非零值,则 rx 的符号相同并且其数量值小于 y

参数

x
被除数

y
除数

返回值

x/y的浮点数余数。

范例

示例 #1 fmod 的使用

<?php
$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7
?>

getrandmax

显示随机数最大的可能值

说明

int getrandmax ( void )

返回调用 rand 可能返回的最大值。

返回值

rand 返回 随机数可能返回的最大值

参见

  • rand
  • srand
  • mt_getrandmax

hexdec

十六进制转换为十进制

说明

number hexdec ( string $hex_string )

返回与 hex_string 参数所表示的十六进制数等值的的十进制数。<span class="function">hexdec 将一个十六进制字符串转换为十进制数。

hexdec 会忽略它遇到的任意非十六进制的字符。

参数

hex_string
要转换的十六进制的字符串

返回值

hex_string 十进制的表示

更新日志

版本 说明
4.1.0 PHP 4.1.0 开始,该函数可以处理 integer 大数字,这种情况下,它会返回 float 类型。

范例

示例 #1 hexdec 例子

<?php
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// both print "int(238)"

var_dump(hexdec("that")); // print "int(10)"
var_dump(hexdec("a0")); // print "int(160)"
?>

参见

  • dechex
  • bindec
  • octdec
  • base_convert

hypot

计算一直角三角形的斜边长度

说明

float hypot ( float $x , float $y )

hypot 函数将会跟据直角三角形的两直解边长度 xy 计算其斜边的长度。或者是从标点 (x, y) 到原点的距离。该函数的算法等同于 sqrt(x*x + y*y)

参数

x
第一条边的长度

y
第二条边的长度

返回值

计算斜边的长度

intdiv

对除法结果取整

说明

int intdiv ( int $dividend , <span class="type">int $divisor )

返回 dividend 除以 divisor 商数的整数部分。

参数

dividend
被除数。

divisor
除数。

返回值

dividend 除以 divisor 的商,对该商取整。

错误/异常

如果 divisor0,将抛出 <span class="classname">DivisionByZeroError 异常。 如果 dividendPHP_INT_MIN 并且 divisor-1,将抛出 <span class="classname">ArithmeticError 异常.

范例

示例 #1 intdiv 的一些例子

<?php
var_dump(intdiv(3, 2));
var_dump(intdiv(-3, 2));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
var_dump(intdiv(PHP_INT_MIN, -1));
var_dump(intdiv(1, 0));
?>
int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Fatal error: Uncaught ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer in %s on line 8
Fatal error: Uncaught DivisionByZeroError: Division by zero in %s on line 9

is_finite

判断是否为有限值

说明

bool <span class="methodname">is_finite ( <span class="type">float $val )

检查 val 是否是是本机平台上浮点数所允许范围中的一个合法的有限值。

参数

val
要检查的值

返回值

如果 val 是本机平台上 PHP 浮点数所允许范围中的一个合法的有限值,则返回 true

参见

  • is_infinite
  • is_nan

is_infinite

判断是否为无限值

说明

bool <span class="methodname">is_infinite ( <span class="type">float $val )

如果 val 为无穷大(正的或负的),例如 log(0) 的结果或者任何超出本平台的浮点数范围的值,则返回 true

参数

val
要检查的值

返回值

如果 val 为无穷大返回 true,否则返回 false

参见

  • is_finite
  • is_nan

is_nan

判断是否为合法数值

说明

bool is_nan ( float $val )

如果 val 为“非数值”,例如 acos(1.01) 的结果,则返回 true

参数

val
要检查的值

返回值

如果 val 不是一个数字(not a number)返回 true,否则返回 false

范例

示例 #1 is_nan 例子

<?php
// Invalid calculation, will return a 
// NaN value
$nan = acos(8);

var_dump($nan, is_nan($nan));
?>

以上例程会输出:

float(NAN)
bool(true)

参见

  • is_finite
  • is_infinite

lcg_value

组合线性同余发生器

说明

float <span class="methodname">lcg_value ( <span class="methodparam">void )

lcg_value 返回范围为 (0, 1) 的一个伪随机数。本函数组合了周期为 2^31 - 85 和 2^31 - 249 的两个同余发生器。本函数的周期等于这两个素数的乘积。

返回值

范围为 (0, 1) 的伪随机数。

参见

  • rand
  • mt_rand

log10

以 10 为底的对数

说明

float log10 ( float $arg )

返回参数 arg 以 10 为底的对数。

参数

arg
要处理的参数

返回值

arg 以 10 为底的对数。

参见

  • log

log1p

返回 log(1 + number),甚至当 number 的值接近零也能计算出准确结果

说明

float log1p ( float $number )

log1p 返回 log(1 + number),甚至当 number 的值接近零也能计算出准确结果。 <span class="function">log might only return log(1) in this case due to lack of precision.

参数

number
要处理的参数

返回值

log(1 + number)

更新日志

版本 说明
5.3.0 此函数在所有平台上均可用

参见

  • expm1
  • log
  • log10

log

自然对数

说明

float log ( float $arg [, float $base = M_E ] )

如果指定了可选的参数 baselog 返回 logbase arg,否则 log 返回参数 arg 的自然对数。

参数

arg
要计算对数的值

base
The optional logarithmic base to use (defaults to 'e' and so to the natural logarithm).

返回值

返回 logbase arg,或者它的自然对数。

更新日志

版本 说明
4.3.0 可选参数 base可用。 你可以计算任意以 b 为底 n 的对数,但其实使用的是数学等式:logb(n) = log(n)/log(b),其中 log 是自然对数。

参见

  • log10
  • exp
  • pow

max

找出最大值

说明

mixed max ( array $values )

mixed max ( mixed $value1 , <span class="type">mixed $value2 [, <span class="methodparam">mixed $... ] )

如果仅有一个参数且为数组,max 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数而 max 会返回这些值中最大的一个。可以比较无限多个值。

Note:

PHP 会将非数值的 string 当成 0,但如果这个正是最大的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最大值,max 会返回其中数值的 0,如果参数中没有数值的 0,则返回按字母表顺序最大的字符串。

参数

values
包含了多个值的数组。

value1
Any comparable value.

value2
Any comparable value.

...
Any comparable value.

返回值

max 返回参数中数值最大的值。 If multiple values can be considered of the same size, the one that is listed first will be returned.

When max is given multiple <span class="type">arrays, the longest array is returned. If all the arrays have the same length, max will use lexicographic ordering to find the return value.

When given a string it will be cast as an integer when comparing.

范例

示例 #1 使用 max 的例子

<?php
echo max(1, 3, 5, 6, 7);  // 7
echo max(array(2, 4, 5)); // 5

// When 'hello' is cast as integer it will be 0. Both the parameters are equally
// long, so the order they are given in determines the result
echo max(0, 'hello');     // 0
echo max('hello', 0);     // hello

echo max('42', 3); // '42'

// Here 0 > -1, so 'hello' is the return value.
echo max(-1, 'hello');    // hello

// With multiple arrays of different lengths, max returns the longest
$val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1)

// 对多个数组,max 从左向右比较。
   // 因此在本例中:2 == 2,但 4 < 5
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)

// 如果同时给出数组和非数组作为参数,则总是将数组视为
   // 最大值返回
$val = max('string', array(2, 5, 7), 42);   // array(2, 5, 7)
?>

参见

  • min
  • count

min

找出最小值

说明

mixed min ( array $values )

mixed min ( mixed $value1 , <span class="type">mixed $value2 [, <span class="methodparam">mixed $... ] )

如果仅有一个参数且为数组,min 返回该数组中最小的值。如果给出了两个或更多参数, <span class="function">min 会返回这些值中最小的一个。

Note:

PHP 会将非数值的 string 当成 0,但如果这个正是最小的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最小值,min 会返回按字母表顺序最小的字符串,如果其中没有字符串的话,则返回数值的 0

参数

values
包含值的数组。

value1
Any comparable value.

value2
Any comparable value.

...
Any comparable value.

返回值

min 返回参数中数值最小的。

范例

示例 #1 min 用法的例子

<?php
echo min(2, 3, 1, 6, 7);  // 1
echo min(array(2, 4, 5)); // 2

echo min(0, 'hello');     // 0
echo min('hello', 0);     // hello
echo min('hello', -1);    // -1

// 对多个数组,min 从左向右比较。
// 因此在本例中:2 == 2,但 4 < 5
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)

// 如果同时给出数组和非数组作为参数,则不可能返回数组,因为
// 数组被视为最大的
$val = min('string', array(2, 5, 7), 42);   // string
?>

参见

  • max
  • count

mt_getrandmax

显示随机数的最大可能值

说明

int <span class="methodname">mt_getrandmax ( <span class="methodparam">void )

返回调用 mt_rand 所能返回的最大的随机数。

返回值

返回调用 mt_rand 所能返回的最大的随机数。

范例

示例 #1 计算一个随机浮点数

<?php
function randomFloat($min = 0, $max = 1) {
    return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}

var_dump(randomFloat());
var_dump(randomFloat(2, 20));
?>

以上例程的输出类似于:

float(0.91601131712832)
float(16.511210331931)

参见

  • mt_rand
  • mt_srand
  • getrandmax

mt_rand

生成更好的随机数

说明

int mt_rand ( void )

int mt_rand ( int $min , int $max )

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand 函数默认使用 libc 随机数发生器。<span class="function">mt_rand 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

如果没有提供可选参数 minmax,<span class="function">mt_rand 返回 0 到 <span class="function">mt_getrandmax 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)

参数

min
可选的、返回的最小值(默认:0)

max
可选的、返回的最大值(默认:<span class="function">mt_getrandmax)

返回值

返回 min (或者 0) 到 max (或者是到 <span class="function">mt_getrandmax ,包含这个值)之间的随机整数。

更新日志

版本 说明
4.2.0 随机数发生器自动进行播种。

范例

示例 #1 mt_rand 例子

<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";

echo mt_rand(5, 15);
?>

以上例程的输出类似于:

1604716014
1478613278
6

注释

Caution

The distribution of mt_rand return values is biased towards even numbers on 64-bit builds of PHP when max is beyond 2^32.

参见

  • mt_srand
  • mt_getrandmax
  • rand

mt_srand

播下一个更好的随机数发生器种子

说明

void mt_srand ([ int $seed ] )

seed 来给随机数发生器播种。 没有设定 seed 参数时,会被设为随时数。

Note: 不再需要用 <span class="function">srand 或 <span class="function">mt_srand 给随机数发生器播种,因为现在是由系统自动完成的。

参数

seed
可选的种子值

返回值

没有返回值。

更新日志

版本 说明
4.2.0 The seed becomes optional and defaults to a random value if omitted.
5.2.1 The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.

范例

示例 #1 mt_srand 例子

<?php
// seed with microseconds
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>

参见

  • mt_rand
  • mt_getrandmax
  • srand

octdec

八进制转换为十进制

说明

number octdec ( string $octal_string )

返回 octal_string 参数所表示的八进制数的十进制等值。

参数

octal_string
要转换的八进制的字符串

返回值

octal_string 的十进制的表示

更新日志

版本 说明
4.1.0 该函数可以处理 integer 大数字,这种情况下,它会返回 float 类型。

范例

示例 #1 octdec 例子

<?php
echo octdec('77') . "\n";
echo octdec(decoct(45));
?>

以上例程会输出:

63
45

参见

  • decoct
  • bindec
  • hexdec
  • base_convert

pi

得到圆周率值

说明

float pi ( void )

返回圆周率的近似值。返回值的 float 精度是由 php.ini 中的 precision 指令确定。默认值是 14。你也可以使用 M_PI 常量,该常量产生与 pi 完全相同的结果。

返回值

圆周率(pi)的浮点近似值。

范例

示例 #1 pi 例子

<?php
echo pi(); // 3.1415926535898
echo M_PI; // 3.1415926535898
?>

pow

指数表达式

说明

number pow ( number $base , <span class="type">number $exp )

返回 baseexp 次方的幂。如果可能,本函数会返回 <span class="type">integer。

参数

base
The base to use

exp
指数

返回值

baseexp 次方的幂。 If both arguments are non-negative integers and the result can be represented as an integer, the result will be returned with integer type, otherwise it will be returned as a float.

更新日志

版本 说明
4.2.0 如果不能计算幂,将发出一条警告,pow 将返回 falsepow 开始不产生任何的警告。
4.0.6 如果可能函数现在会返回 integer 的结果,之前 总是返回 float,For older versions, you may receive a bogus result for complex numbers.

范例

示例 #1 pow 的一些例子

<?php

var_dump(pow(2, 8)); // int(256)
echo pow(-1, 20); // 1
echo pow(0, 0); // 1

echo pow(-1, 5.5); // PHP >4.0.6  NAN
echo pow(-1, 5.5); // PHP <=4.0.6 1.#IND
?>

注释

Note:

本函数会转换所有输入为数字,即使是非标量值,会导致怪异的(weird)结果。

参见

  • exp
  • sqrt
  • bcpow
  • gmp_pow

rad2deg

将弧度数转换为相应的角度数

说明

float rad2deg ( float $number )

本函数将 number 从弧度转换为角度。

参数

number
一个弧度值

返回值

number 相应的角度数

范例

示例 #1 rad2deg 例子

<?php

echo rad2deg(M_PI_4); // 45

?>

参见

  • deg2rad

rand

产生一个随机整数

说明

int rand ( void )

int rand ( int $min , int $max )

如果没有提供可选参数 minmaxrand 返回 0 到 getrandmax 之间的伪随机整数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)

Note: 在某些平台下(例如 Windows)<span class="function">getrandmax 只有 32767。如果需要的范围大于 32767,那么指定 minmax 参数就可以生成更大的数了,或者考虑用 mt_rand 来替代之。

参数

min
返回的最低值(默认:0)

max
返回的最高值(默认:getrandmax

返回值

A pseudo random value between min (or 0) and max (or <span class="function">getrandmax, inclusive).

更新日志

版本 说明
4.2.0 随机数发生器自动进行播种。

范例

示例 #1 rand 例子

<?php
echo rand() . "\n";
echo rand() . "\n";

echo rand(5, 15);
?>

以上例程的输出类似于:

7771
22264
11

参见

  • srand
  • getrandmax
  • mt_rand

round

对浮点数进行四舍五入

说明

float round ( float $val [, int $precision = 0 [, <span class="methodparam">int $mode<span class="initializer"> = PHP_ROUND_HALF_UP ]] )

返回将 val 根据指定精度 precision(十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。

Note: PHP 默认不能正确处理类似 "12,300.2" 的字符串。见字符串转换为数值

参数

val
要处理的值

precision
可选的十进制小数点后数字的数目。

mode
以下之一: PHP_ROUND_HALF_UPPHP_ROUND_HALF_DOWN PHP_ROUND_HALF_EVENPHP_ROUND_HALF_ODD

返回值

四舍五入后的值

范例

示例 #1 round 例子

<?php
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
?>

示例 #2 mode 例子

<?php
echo round(9.5, 0, PHP_ROUND_HALF_UP);   // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD);  // 9

echo round(8.5, 0, PHP_ROUND_HALF_UP);   // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD);  // 9
?>

更新日志

版本 说明
5.3.0 引入了 mode 参数
5.2.7 round 的内部运作修改符合 C99 的标准。

参见

  • ceil
  • floor
  • number_format

sin

正弦

说明

float sin ( float $arg )

sin 返回参数 arg 的正弦值。参数 arg 的单位为弧度。

参数

arg
单位是弧度的值。

返回值

arg 的正弦值

范例

示例 #1 sin 例子

<?php

// 返回值的精度由配置中的 precision 指示确定
echo sin(deg2rad(60));  //  0.866025403 ...
echo sin(60);           // -0.304810621 ...

?>

参见

  • asin
  • sinh
  • cos
  • tan
  • deg2rad

sinh

双曲正弦

说明

float sinh ( float $arg )

返回 arg 的双曲正弦值,定义为 (exp(arg) - exp(-arg))/2

参数

arg
要处理的参数

返回值

arg 的双曲正弦值

参见

  • sin
  • asinh
  • cosh
  • tanh

sqrt

平方根

说明

float sqrt ( float $arg )

返回 arg 的平方根。

参数

arg
要处理的参数

返回值

返回 arg 的平方根,负数时返回 NAN

范例

示例 #1 sqrt 例子

<?php
// Precision depends on your precision directive
echo sqrt(9); // 3
echo sqrt(10); // 3.16227766 ...
?>

参见

  • pow

srand

播下随机数发生器种子

说明

void srand ([ int $seed ] )

seed 播下随机数发生器种子。seed 参数没有给出时,会被设为随时数。

Note: 不再需要用 <span class="function">srand 或 <span class="function">mt_srand 给随机数发生器播种,因为现在是由系统自动完成的。

参数

seed
可选的种子值

返回值

没有返回值。

更新日志

版本 说明
Since 4.2.0 seed 成为可选,省略时会默认使用随机值。

范例

示例 #1 srand 例子

<?php
// seed with microseconds
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();
?>

参见

  • rand
  • getrandmax
  • mt_srand

tan

正切

说明

float tan ( float $arg )

tan 返回参数 arg 的正切值。参数 arg 的单位为弧度。

参数

arg
要处理的以弧度为单位的参数

返回值

arg 的正切值

范例

示例 #1 tan 例子

<?php

echo tan(M_PI_4); // 1

?>

参见

  • atan
  • atan2
  • sin
  • cos
  • tanh
  • deg2rad

tanh

双曲正切

说明

float tanh ( float $arg )

返回 arg 的双曲正切值,定义为 sinh(arg)/cosh(arg)

参数

arg
要处理的参数

返回值

arg 的双曲正切值

参见

  • tan
  • atanh
  • sinh
  • cosh

目录

  • abs — 绝对值
  • acos — 反余弦
  • acosh — 反双曲余弦
  • asin — 反正弦
  • asinh — 反双曲正弦
  • atan2 — 两个参数的反正切
  • atan — 反正切
  • atanh — 反双曲正切
  • base_convert — 在任意进制之间转换数字
  • bindec — 二进制转换为十进制
  • ceil — 进一法取整
  • cos — 余弦
  • cosh — 双曲余弦
  • decbin — 十进制转换为二进制
  • dechex — 十进制转换为十六进制
  • decoct — 十进制转换为八进制
  • deg2rad — 将角度转换为弧度
  • exp — 计算 e 的指数
  • expm1 — 返回 exp(number) - 1,甚至当 number 的值接近零也能计算出准确结果
  • fdiv — Divides two numbers, according to IEEE 754
  • floor — 舍去法取整
  • fmod — 返回除法的浮点数余数
  • getrandmax — 显示随机数最大的可能值
  • hexdec — 十六进制转换为十进制
  • hypot — 计算一直角三角形的斜边长度
  • intdiv — 对除法结果取整
  • is_finite — 判断是否为有限值
  • is_infinite — 判断是否为无限值
  • is_nan — 判断是否为合法数值
  • lcg_value — 组合线性同余发生器
  • log10 — 以 10 为底的对数
  • log1p — 返回 log(1 + number),甚至当 number 的值接近零也能计算出准确结果
  • log — 自然对数
  • max — 找出最大值
  • min — 找出最小值
  • mt_getrandmax — 显示随机数的最大可能值
  • mt_rand — 生成更好的随机数
  • mt_srand — 播下一个更好的随机数发生器种子
  • octdec — 八进制转换为十进制
  • pi — 得到圆周率值
  • pow — 指数表达式
  • rad2deg — 将弧度数转换为相应的角度数
  • rand — 产生一个随机整数
  • round — 对浮点数进行四舍五入
  • sin — 正弦
  • sinh — 双曲正弦
  • sqrt — 平方根
  • srand — 播下随机数发生器种子
  • tan — 正切
  • tanh — 双曲正切

本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除