美文网首页PHP程序员
PHP BC数学函数

PHP BC数学函数

作者: php转go | 来源:发表于2020-10-30 14:05 被阅读0次

对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1)
所有格式都是bcxxx(left_operand,right_operand, $scale = null)

所有函数得到的都是去尾法的结果

  1. bcscale — 设置所有bc数学函数的默认小数点保留位数

再使用bc函数之前,可以先设置保留小数点数

  1. bcadd — 2个任意精度数字的加法计算

bcadd (left_operand,right_operand, $scale = null)
第三个参数设置结果中小数点后的小数位数,如果不设置,默认是0,得到的去尾法的结果

echo bcadd (1.2,1.9); #结果3  相加结果3.1,去尾法得3
echo bcadd (1.2,1.7); #结果2   相加结果2.9,去尾法得3
echo bcadd (1.219,1.919,2); #结果3.13,3.138,去掉最后一个,再保留2位小数
echo bcadd (1.299,1.709,2); #结果3.00 ,3.008 去掉最后一个,再保留2位小数
  1. bccomp — 比较两个任意精度的数字

bccomp (left_operand,right_operand, $scale = null)
如果两个数相等返回0, 左边的数left_operand比较右边的数right_operand大返回1, 否则返回-1.

   echo bccomp  (1.219,1.210,3); #输出1 设置了3位小数,就全部对比,1.219>1.210
   echo bccomp  (1.219,1.210,2); #输出0 设置了3位小数,去尾法以后再对比,1.21=1.21,所以返回0
  1. bcdiv — 2个任意精度的数字除法计算
 bcdiv   (1.219,1.210,3); #1.007
  1. bcmod — 对一个任意精度数字取模

没有第三个参数,不能设置小数点

bcmod    (1.219,1.210); #0,取模
bcmod    (1.219,1.210); #0,取模
bcmod    (1219,1210); #9,取模
  1. bcmul — 2个任意精度数字乘法计算
  echo bcmul     (1.219,1.210,3); #1.474
  echo bcmul    (1.219,1.210,2); #1.47
  echo bcmul    (1.219,1.210,1); #1.4
  1. bcpow — 任意精度数字的乘方

bcpow() 第二个参数必须是整数,允许负整数,不能为小数
pow()第二个参数就允许小数

  echo bcmul     (1.219,2,3); #1.485
  echo bcmul    (1.219,3,2); #1.81
  echo bcmul    (1.219,3,1); #1.8
  1. bcpowmod — 将任意精度数字提高到另一个精度,并将其降低到指定的模量
    string bcpowmod ( string x, string y, string modulus [, int scale] )

先计算 x ,y 的二数之幂,再取余。

bcpowmod($x, $y, $mod);
#等价于
bcmod(bcpow($x, $y), $mod);
  1. bcsqrt — 任意精度数字的二次方根

只有两个参数,被开方数与保留小数点位数

echo bcsqrt       (4,2); #2
 echo bcsqrt     (5,2);#2.23
  1. bcsub — 2个任意精度数字的减法

第一个参数减去第二个参数

echo bcsub (4,2,2); #2.00 4-2得出结果再保留2位小数

相关文章

网友评论

    本文标题:PHP BC数学函数

    本文链接:https://www.haomeiwen.com/subject/ufxdvktx.html