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

PHP中用于精确计算的bcmath扩展相关推荐

  1. PHP中的精确计算bcadd,bcsub,bcmul,bcdiv 及 扩展安装

    <?php /*** 精确加法* @param [type] $a [description]* @param [type] $b [description]*/ function math_a ...

  2. java 小数精确_Java中小数精确计算

    小数精确计算 System.out.println(2.00 -1.10);//0.8999999999999999 上面的计算出的结果不是 0.9,而是一连串的小数.问题在于1.1这个数字不能被精确 ...

  3. android int 首位值_Android中数值的精确计算

    Android中数值计算的精度 在平常的开发中,会经常进行数值的计算,而如何才能更加准确的得到计算结果是最重要的,最近在做一个金融类的项目,其中涉及到黄金的计算,所以写这篇文章来总结一下,如何对数值的 ...

  4. python扩展库用于科学计算的有哪些_数据科学必备的十大 Python 库

    ​Python 已成为当今使用最广泛的编程语言之一,尤其是在数据科学领域. Python 是一种高性能的语言,易于学习和调试,并且具有广泛的库支持.这些库都有自己独特的功能,一些专注于数据挖掘,一些专 ...

  5. 从一座瑞典风机的倒塌看VDI2230用于螺栓连接精确计算的重要性

    作者:螺栓设计老张 一.写在前面 引言:在机械行业,螺栓是与轴承.齿轮齐名的三大最主要机械元素,而从应用广泛程度来看,相比于轴承和齿轮是有过之而无不及.无论是机械传动还是机械结构,都离不开螺栓,螺栓的 ...

  6. Oracle中使用SQL根据出生日期精确计算年龄

    Oracle中使用SQL根据出生日期精确计算年龄 提示:以下是本篇文章正文内容,下面案例可供参考 代码如下(示例): select XM,CSNY as 出生日期,-- extract函数用于提取日期 ...

  7. java 精确 计算_java中进行高精度精准计算

    今天在做接口传保费的时候出现了一个奇怪的问题,double类型保费变成了一大长串的非精准保费,甚至奇怪,难道是java的bug?最后通过度娘找到了答案 话不多说,先看如下代码public final ...

  8. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...

    (注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...

  9. 不是python中用于开发用户界面的第三方库-Python计算生态习题(50题)

    1.Python网络爬虫方向的第三方库是 A. request B. jieba C.itchat D.time 答案:A 2.Python网络爬虫方向的第三方库是 A.numpy B.scrapy ...

最新文章

  1. 从find_vma和find_vma_prev看内核
  2. linux命令(51):set 指定行,直接替换并修改文件
  3. 【组合取补集】数三角形 @CQOI2014/BZOJ3505/upcexam3843
  4. JS----JavaScript中防抖和节流知识概述
  5. 在Web服务器磁盘上缓存数据和HTML页面
  6. python中until函数_等待应用程序窗口:python中的pywinauto.timings.WaitUntilPasses
  7. 高性能MySQL(4)——查询性能优化
  8. [Centos 6.2] centos 6.2(64位)网络配置
  9. linux2.4.18内核定时器的使用
  10. java SimpleDateFormat类浅析
  11. 情人节到了,Postman 都脱单了,那你咧?
  12. SharePoint 网站登录不上,3次输入用户名/密码白页
  13. 饥荒联机版服务器搭建_饥荒联机版steam专用服务器快速搭建教程
  14. [休闲]GDC China 2007上海中国游戏开发者大会
  15. python 支付宝支付 无效根证书_python支付宝支付示例详解
  16. CF-Educational Codeforces Round 44 (Rated for Div. 2)-A-Chess Placing
  17. 在使用selenium 做IE自动化操作时 请求状态码 400【帮忙解决或者找出问题所在悬赏200】
  18. python爬取付费直播的视频_教你用20行代码爬取直播平台弹幕(附源码)
  19. git pull 拉取代码的时候报错 Pulling is not possible because you have unmerged files.
  20. 企业微信朋友圈和个人微信朋友圈有哪些区别?

热门文章

  1. spark如何防止内存溢出_spark开发十大原则
  2. apache 编译支持php_apache2 不支持php文件 解决办法(示例代码)
  3. mysql远程访问显示警告信息_mysql远程访问的时候遇到了各种问题
  4. 为什么先交钱后用电_适合痘痘痘印的好的护肤品,为什么要先清洁后祛痘!_新闻中心...
  5. Java中byte[]与十六进制之间的转化
  6. 时间序列分析模型:ARIMA模型和SARIMAX算法
  7. 二十七、Kaggle| 研究生入学率预测
  8. webpack -v 指令报错
  9. 最新最全的视觉Transformer教程!论文分析 + 逐行Coding,带你轻松玩转ViT
  10. 仅输入单张图片,就能“看”出物体材质!这篇图形学论文已被SIGGRAPH 2021收录...