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