PHP中用于精确计算的bcmath扩展

1.简介
      对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,
     最多为2147483647-1(或0x7FFFFFFF-1)。
     本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

2.含义

(1)2个任意精度数字的加法计算

$v = bcadd(1.11,2.222,8);
var_dump($v); //结果:string(10) "3.33200000"

(2)2个任意精度数字的减法计算

$v = bcsub(1.11,2.222,8);
var_dump($v);  //结果:string(11) "-1.11200000"

(3)2个任意精度数字的乘法计算

$v = bcmul(1.11,1.11,6);
var_dump($v); //string(8) "1.232100"

(4)2个任意精度的数字除法计算

$v = bcdiv(1.11,2.2222,8);
var_dump($v); //结果: string(10) "0.49950499"

(5)比较两个任意精度的数字

$v = bccomp(1.11111,1.1112222);
var_dump($v);  //结果: int(0)

(6)任意精度数字的乘方

$v = bcpow(4.2,3,4);
var_dump($v); //结果string(7) "74.0880"

(7)对一个任意精度数字取模

$v = bcmod(100.24,17,8);
var_dump($v); //结果: string(11) "15.24000000"

(8)设置所有bc数学函数的默认小数点保留位数

bcscale(8);//在当前域中有作用函数
$v = 3.1415926;
var_dump($v); //结果double(3.1415926)

(9)返回操作数的二次方根

$v = bcsqrt(2,6); //√3
var_dump($v); //结果  string(8) "1.414213"

(10)先次方再取模

$a = bcpowmod(2, 4, 10,2); // 相当于bcmod(bcpow(2,4),10,2)
var_dump($a);  //结果:string(4) "6.00"

使用场景:例如 计算发票税需要保留8位小数
如果中间加入字符串会出现Fatal error

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值