php长整型数字运算--GMP(任意长度整数)

2021-03-20

GNU MP库允许处理任意长度的整数,但是必须将大整数指定为字符串,否则PHP会将其强制转换为浮点数,从而导致精度下降

linux安装

下载GMP:http://gmplib.org/#DOWNLOAD

安装:在具有GMP支持的情况下使用--with-gmp选项编译PHP

windows安装

开启extension=gmp

运算函数中的参数$num1、$num2可以是int|string|GMP,返回结果为GMP

GMP与原生数字转换

// 创建数字$num的GMP对象;$num可以时十进制、十六进制、八进制,$base为2-62的底数
gmp_init($num, $base = 0);

// 将GMP对象转换为PHP原生整数
gmp_intval($num);

// 将GMP对象转换为字符串,$base我2-62/-2 - -36的基数
gmp_strval($num, $base = 10);

公约数/公倍数

// $num1和$num2的最大公约数;$num1和$num2其中一个为负则结果为负,否则为正
gmp_gcd($num1, $num2);

// $num1和$num2的最小公倍数
gmp_lcm($num1, $num2);

 

{/if}