先介绍一下当前使用的环境。同学们可以比较一下,看本篇文章是否可以提供帮助。

docker 部署

  • nginx 1.24
  • php 8.1-fpm

再介绍一下框架,使用的是 "laravel 9.33.0"

其实这里跟 laravel 框架和 nginx 是没太多关系的,因为我们主要是使用 php 的扩展函数 bcmath

主要就是列出来,好区分一下环境,了解更多。或许有时候 就会存在一些我们认为不可能,结果就是如此的事情。

bc函数,除了 bcadd 还有其他的, bcadd 的意思是指 两个数字 相加,那么有相加,就有相减,相乘,相除...

先将相关的 bc函数 列出来

  • bcadd 两个任意精度数字相加
  • bccomp 比较两个任意精度的数字,结果 1,0,-1
  • bcdiv 两个任意精度的数字除法计算
  • bcmod 对一个任意精度数字取模
  • bcmul 两个任意精度数字乘法计算
  • bcpow 任意精度数字的乘方
  • bcpowmod 先乘方,再取模
  • bcscale 设置所有bc数学函数的默认小数点保留位数
  • bcsqrt 任意精度数字的二次方根
  • bcsub 两个任意精度数字相减

场景:

我在做 订单金额 计算的时候,考虑到精度问题,如果用常规的 100 + 20 - 7 这种,或许会出现一些精度问题,因为以前就遇到过。我明明计算并且返回的数据是 某金额 比如是 9.99元,json 数据返回给前端时,结果就出现 9.999999998 这样的数据给到前端了。前端不知所措,我更加不知所措。 原因是因为 编程语言对浮点数和大整数的运算,表示,存储方面都存在一定的问题。

所以,出现了 bcmath 

关于 bcmath (Binary Calculator)

对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为 2147483647-1(或0x7FFFFFFF-1)。

那么我们就看一下 phpinfo 信息,配置是否支持。

很不巧,并没有 bcmath 相关的,所以我们在代码里使用 bcadd() 时,就会出现这样的错误:

Call to undefined function bcadd()

"Call to undefined function bcadd()" 翻译过来就是 "调用未定义函数 bcadd()"

我们需要解决的是,安装下载 bcmath 扩展包,这样就可以了。

因为用的是 docker,所以步骤如下:

1. 进入容器

docker exec -it CONTAINER ID bash

CONTAINER ID  这是容器的ID,也可以填写容器名称

查看容器 ID 和容器名称的命令:

docker ps

2. 执行安装

docker-php-ext-install -j$(nproc) bcmath

3. 退出容器,重启容器

exitdocker restart CONTAINER ID

然后我们再返回 phpinfo 查看一下

现在就能找到 bcmath 相关的了。

然后我们回到代码里,之前运行 bcadd 时,出现过 "Call to undefined function bcadd()"

那么我们现在执行看一下:

到此 就解决了 "Call to undefined function bcadd()" 的问题

Call to undefined function bcadd()相关推荐

  1. PHP报错:Call to undefined function bcmul()

    标签:bcmath bcmul() PHP报错:Call to undefined function bcmul(),在网上查到 bc是Binary Calculator的缩写.bc*函数的参数都是操 ...

  2. PHP报错:Call to undefined function bcmul()即php-bcmath模块未正常工作

    PHP报错:Call to undefined function bcmul(),在网上查到 bc是Binary Calculator的缩写.bc*函数的参数都是操作数加上一个可选的 [int sca ...

  3. 解决Undefined function or method 'vgg_kmiter' for input arguments of type 'double'.

    Undefined function or method 'vgg_kmiter' for input arguments of type 'double'. Error in ==> vgg_ ...

  4. php5.4 mysql connect,php5.4 Call to undefined function mysql_connect()

    今天学习PHP中连接MySQL,使用mysql_connect()函数时,碰到以下错误: "Call to undefined function mysql_connect()", ...

  5. Call to undefined function mysql_connect()

    PHP5 报错Fatal error: Call to undefined function mysql_connect() 解决方法一 在PHP代码中使用phpinfo()函数查看PHP基本信息 从 ...

  6. OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案

    在windows_64下利用命令:pip install pyopengl 安装python的openGL环境.结果运行示例代码出现以下错误: OpenGL.error.NullFunctionErr ...

  7. Call to undefined function Workerman\posix_getpid

    2019独角兽企业重金招聘Python工程师标准>>> workerman 在centos下报PHP Fatal error: Call to undefined function ...

  8. php5.6.30环境报错Call to undefined function ImageCreate() 编译安装 gd库

    php5.6.30环境报错Call to undefined function ImageCreate() 编译安装 gd库发现php5.6.30没有加载gd库[root@cn_vs_web04:/u ...

  9. Matlab:成功解决Undefined function or variable B

    Matlab:成功解决Undefined function or variable "B" 目录 解决问题 解决方法 解决问题 Undefined function or vari ...

最新文章

  1. 使用Python和OpenCV实现超快速,简单的伽玛校正功能
  2. NAR:gcMeta——全球微生物组数据存储和标准化分析平台
  3. 减免租金?也要体谅业主难处哟
  4. js css加载器,webpack的CSS加载器的使用
  5. oracle 抽样_深入理解Oracle动态采样
  6. 位向量(bit vector)(算法导论第十一章11.1-2)
  7. javaone_JavaOne 2016 Essentials:您不应该错过的7个事件和会话
  8. linux下查看cmake的版本
  9. MySQL 基础 ———— 存储过程与函数
  10. 把触发器说透(转载)
  11. android 壁纸服务,8.1 初识Android壁纸
  12. word文件做一半未响应_word文档未响应文件还没保存该怎么处理?
  13. matlab中Ctphi什么意思,Matlab在物理上的应用举例
  14. php计算跨月请假天数,计算请假天数JavaScript方法
  15. Android项目:基于Android安卓医院挂号预约系统软件app(计算机毕业设计)
  16. Excel获取Sheet名称公式
  17. moviepy音视频剪辑:使用concatenate_videoclips和clips_array将多个视频合成一个顺序播放或同屏播放的视频
  18. 基于React Native和Ethers.js的电子钱包(二):路由和导航
  19. 水下导弹发射环境因素建模需求及其扫盲笔记
  20. 【PPic】基于Electron+Vue+iView的图床应用设计

热门文章

  1. 深入浅出之dtype( )和astype( )函数
  2. Notification的功能与使用案例
  3. mysql两个日期相减,得到相差的天数
  4. 百度JAVA一二三面面经(2019秋招深圳)
  5. linux 五种 IO 模型
  6. 软考中级软件设计师--7.设计模式
  7. 修改Matlab的背景颜色
  8. Java实验:重写equals方法
  9. java语言能干什么
  10. json vue 对象转数组_json 将对象转化成数组第二种方式