bcmath 冷不防 2023-03-02 13:24 3阅读 0赞 # bcmath # > 对于任意精度的数学,`bcmath`提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为`2147483647-1` > 在编译PHP时加上参数`--enable-bcmath`即可启用改扩展,也可以在编译安装完成后,通过`phpize`方式安装,源码目录位于PHP的源码目录中的ext目录。 > `phpize`安装方式可以参考[http://404.360tryst.com/views/7.html\#layout][http_404.360tryst.com_views_7.html_layout] ## 1.浮点型计算问题 ## > 也许有人会说,PHP不是提供了数学运算的符号,比如说`+`,`-`,`*`,`\`等运算,为什么还要`bcmath`呢,下面给大家看一下例子 <?php $a = 1.5 - 1.2; var_dump($a === 0.3); > 上面例程会输出`true`吗?也许你会想这么简单的问题,肯定返回`true`啊,下面来看运行结果 bool(false) > 不要怀疑自己的眼睛,确实是`false`,为什么是`false`呢?关于浮点数计算精度的问题原因网上有很多的解析,我就不在这里做过多的解释。 > 遇到上面的问题,我们应该怎么去解决呢?做过微信支付的朋友可能知道,微信支付的接口人民币的单位是`分`,人民币最小的单位也是`分`,那么就将小数运算变成了整数运算,这样就规避了问题。 > 还有其他方案吗?肯定是有的,就是本文要介绍的扩展。 ## 2.`bcmath`运算 ## > 从上面例程我们可以看出,浮点型数学计算是有问题的,那么`bcmath`扩展怎么做运算呢? * 常用函数 <table> <thead> <tr> <th align="left">函数名称</th> <th align="left">函数功能</th> </tr> </thead> <tbody> <tr> <td align="left">bcadd($left_operand, $right_operand, $scale = 0)</td> <td align="left">2个任意精度数字的加法计算</td> </tr> <tr> <td align="left">bcsub($left_operand, $right_operand, $scale = 0)</td> <td align="left">2个任意精度数字的减法</td> </tr> <tr> <td align="left">bcmul($left_operand, $right_operand, $scale = 0)</td> <td align="left">2个任意精度数字乘法计算</td> </tr> <tr> <td align="left">bcdiv($dividend, $divisor, $scale = 0)</td> <td align="left">2个任意精度的数字除法计算</td> </tr> <tr> <td align="left">bccomp($left_operand, $right_operand, $scale = 0)</td> <td align="left">比较两个任意精度的数字,如果left大返回1,相等返回0,left小返回-1</td> </tr> </tbody> </table> > 以上5个函数第三个参数的作用是设置结果中小数点后的小数位数,默认是0 <?php $a = 1.5 - 1.2; var_dump(bccomp($a, '0.2', 1)); var_dump(bccomp($a, '0.3', 1)); var_dump(bccomp($a, '0.4', 1)); > 同样是以上运算,用`bccomp`去比较,结果何如呢? int(1) int(0) int(-1) > 我们可以看到结果是符合我们预期的,当我们遇到浮点型做计算的时候,最好使用`bcmath`来做运算。 ### [学习更多内容: https://404.360tryst.com][https_404.360tryst.com] ### ### [我的视频课程: https://edu.csdn.net/course/detail/9933][https_edu.csdn.net_course_detail_9933] ### [http_404.360tryst.com_views_7.html_layout]: http://404.360tryst.com/views/7.html#layout [https_404.360tryst.com]: https://404.360tryst.com [https_edu.csdn.net_course_detail_9933]: https://edu.csdn.net/course/detail/9933
相关 bcmath bcmath > 对于任意精度的数学,`bcmath`提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为`2147483647-1` > 在编译PHP时加 冷不防/ 2023年03月02日 13:24/ 0 赞/ 4 阅读
相关 PHP 扩展 - 开启扩展[如: PHP 8.0 开启PDO, bcmath] - Windows/docker - 学习/实践 1.应用场景 <table> <tbody> <tr> <td> <p>主要用于开启, 以及安装PHP自带扩展模块.</p> </td> </tr> 落日映苍穹つ/ 2023年01月07日 10:30/ 0 赞/ 214 阅读
相关 composer报错:The requested PHP extension ext-bcmath * is missing from your system. Install or enable 解决compose报错:The requested PHP extension ext-bcmath \ is missing from your system. Insta 阳光穿透心脏的1/2处/ 2022年11月27日 10:12/ 0 赞/ 246 阅读
相关 bcmath 扩展 简介 bcmath 扩展提供了一套bc(Binary Calculator)数学函数,它是一个高精度运算的函数库,可以准确地对任意精度的数字进行运算。 对于十进制的浮点 一时失言乱红尘/ 2022年05月21日 22:48/ 0 赞/ 246 阅读
相关 [乐意黎原创]PHP抛PHP Startup:Unable to load dynamic library "bcmath,Libmcrypt,mhash,mcrypt"等警告及模块动态安装详解 如下,Centos里启动 php-fpm 时,控制台总在抛若干警告。 [root@aerchi] service php-fpm start Sta 迷南。/ 2022年04月13日 15:14/ 0 赞/ 1291 阅读
相关 bcmath相关函数使用 ubuntu 18.04安装bcmath插件 sudo apt-get install php7.0-bcmath centos安装 yum instal 墨蓝/ 2021年12月17日 13:19/ 0 赞/ 250 阅读
还没有评论,来说两句吧...