Work hard and live hard
基础 > PHP任意精度数学函数扩展包BCMath(部分函数)

PHP任意精度数学函数扩展包BCMath(部分函数)

2020-10-29 分类:基础 作者:Agoni 阅读(838)

BCMath扩展提供了一套bc(Binary Calculator)数学函数,它是一个高精度运算的函数库,可以准确地对任意精度的数字进行运算。
PHP的Windows版本已内建对此扩展的支持,Linux版本则需要手动 安装BCMath。

1
2
3
4
5
6
7
8
9
10
11
bcadd($left_operand,$right_operand[,$scale]):两个任意精度数字的加法计算,计算实际结果不满足精度时会补0
bcsub($left_operand,$right_operand[,$scale]):两个任意精度数字的减法计算,计算实际结果不满足精度时会补0
bcmul($left_operand,$right_operand[,$scale]):两个任意精度数字的乘法计算,计算实际结果不满足精度时会返回
按实际精度返回。
bcdiv($left_operand,$right_operand[,$scale]):两个任意精度数字的除法计算,计算实际结果不满足精度时会补0。如果
除数($right_operand)按指定精度($scale)取值为0,则返回null,并产生一个警告。
bccomp($left_operand,$right_operand[,$scale]):比较两个任意精度的数字。如果相等返回0
如果$left_operand>$right_operand返回1,否则返回-1
bcscale($scale): 设置所有bc数学函数的默认小数点保留位数。设置成功返回true,否则返回false
在以上函数中除bcscale()外所有的精度都是可选参数,当不显示指定精度,且并未调用bcscale()方法时,
精度的默认值为php安装目录下php.ini文件中bcmath.scale配置的值,默认为0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$a=1.2345;
$b=6.7;
 
echo bcadd($a,$b);
echo bcadd($a,$b,2);
echo bcadd($a,$b,5);
 
echo bcsub($a,$b);
echo bcsub($a,$b,2);
echo bcsub($a,$b,5);
 
echo bcmul($a,$b);
echo bcmul($a,$b,2);
echo bcmul($a,$b,5);
 
$a=5;
$b=2;
echo bcdiv($a,$b);
echo bcdiv($a,$b,2);
echo bcdiv($a,$b,5);
 
$a=1.2345123
$b=1.2345456
echo bccomp($a,$b);
echo bccomp($a,$b,4);
echo bccomp($a,$b,5);
?>

换句话说:我们看到十进制小数,在计算机内存储的不是一个精确的数字,也不可能精确。所以在数字加减乘除后出现意想不到的结果。所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。

以上......

「 有志者自有千计万计,无志者只感千难万难 」

赞(1) 打赏
1

谢谢,共同进步~

支付宝
微信
标签:

上一篇:

下一篇:

你可能感兴趣

0 条评论关于"PHP任意精度数学函数扩展包BCMath(部分函数)"

博客简介

loading......
姓名:张峰
性别:男
爱好:女
喜欢:旅游,煲剧,写书法,写博客,欢迎一起交流。。。。。。

精彩评论

站点统计

  • 文章总数: 35 篇
  • 草稿数目: 0 篇
  • 分类数目: 11 个
  • 独立页面: 1 个
  • 评论总数: 23 条
  • 链接总数: 4 个
  • 标签总数: 29 个
  • 访问总量: 8091540 次
  • 最近更新: 2022年11月29日
服务热线:
 1995****175

 QQ在线交流

 旺旺在线