php数字运算

2021-11-22
// $num1除以$num2的浮点数结果,如果$num2为0,返回INF、-INF或NAN
fdiv($num1, $num2);

// $num1除以$num2的浮点数余数
fmod($num1, $num2);

// $num1除以$num2的商
intdiv($num1, $num2);

// 返回e的$arg次方
exp($arg);

高精度数学运算--BC函数

//设置所有bc数学函数的未设定情况下得小数点保留位数
bcscale(int $scale ):bool

// $left_operand加$right_operan,保留小数精度为$scale
bcadd($left_operand, $right_operand, $scale = 0);

// $left_operand减$right_operan,保留小数精度为$scale
bcsub($left_operand, $right_operand, $scale = 0);

// $left_operand乘$right_operan,保留小数精度为$scale
bcmul($left_operand, $right_operand, $scale = 0);

// $left_operand除$right_operan,保留小数精度为$scale,$right_operand为0时结果返回null
bcdiv($left_operand, $right_operand, $scale = 0);

// $left_operand使用系数$modulus取模,$modulus为0时结果返回null
bcmod($left_operand, $modulus);

// $left_operand的$right_operan次方,保留小数精度为$scale
bcpow($left_operand, $right_operand, $scale = 0);

// $left_operand的二次方根,保留小数精度为$scale
bcsqrt($operand, $scale = 0);

长整型运算--GMP扩展

算数运算

// $num1、$num2可以时int|string|GMP,返回结果为GMP

// $num1加$num2
gmp_add($num1, $num2);

// $num1减$num2
gmp_sub($num1, $num2);

// $num1乘$num2
gmp_mul($num1, $num2);

// $num1除以$num2,精度运算
gmp_divexact($num1, $num2);

// $num1除以$num2
$rounding_modes = [
    GMP_ROUND_ZERO,     // 结果被截断为0。
    GMP_ROUND_PLUSINF,  // 结果四舍五入到+infinity
    GMP_ROUND_MINUSINF, // 结果四舍五入到-infinity
];
gmp_div_q($num1, $num2, $rounding_mode = GMP_ROUND_ZERO);

// 获得$num1除$num2的余数,余数继承$num1的正负情况
gmp_div_r($num1, $num2, $rounding_mode = GMP_ROUND_ZERO);

// 获得$num1除$num2的商和余数的数组
gmp_div_qr($num1, $num2, $rounding_mode = GMP_ROUND_ZERO);

// 计算num1对num2的模。结果总是非负的
gmp_mod($num1, $num2);

// 计算$num的阶乘
gmp_fact($num);

// 将$num加幂$exponent
gmp_pow($num, $exponent);

逻辑运算

// $num1和$num2按位与运算
gmp_and($num1, $num2);

// $num1和$num2按位或运算
gmp_or($num1, $num2);

// $num1和$num2按位异或运算
gmp_xor($num1, $num2);

 

{/if}