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

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 函数。

以上……

本文为 今天也想见到你 博客文章,转载无需和我联系,但请注明来自 今天也想见到你 博客 0925.wang
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇