php 小数计算 结果变无限小数解决方案
短信预约 -IT技能 免费直播动态提醒
php 小数计算 结果变无限小数解决方案
示例
$a = 1; $b = 3 ;$c = 2.3$a *$b *$c 的结果可能变成 6.8999999999999995
解决方案用更高精度的函数计算
bcadd — 两个任意精度数字的加法计算
//对 $num1 和 $num2 求和。bcadd($num1, $num2, $scale)//参数//$num1//左操作数,字符串类型。//$num2//右操作数,字符串类型。//$scale//设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//以字符串返回两个操作数求和之后的结果。
bcsub — 两个任意精度数字的减法
//$num1 减去 $num2。bcsub($num1, $num2, $scale)//参数//$num1//字符串类型的左操作数。//$num2//字符串类型的右操作数。//$scale//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//以 string 类型返回减法之后的结果。
bcmul — 两个任意精度数字乘法计算
//≈num1 乘以 $num2。bcmul($num1, $num2, $scale)//参数//$num1//字符串类型的左操作数。//$num2//字符串类型的右操作数。//$scale//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//返回字符串类型的结果。
bcdiv — 两个任意精度的数字除法计算
//$num1 除以 $num2。bcdiv($num1, $num2, $scale)//参数//$num1//被除数,字符串类型。//$num2//除数,字符串类型。//$scale//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//返回字符串类型的结果。如果 $num2 是 0 结果为 null。
bccomp — 比较两个任意精度的数字
//比较 num1 和 num2, 并且返回整型数字的结果。bccomp($num1, $num2, $scale)//参数//$num1//左边的运算数,是一个字符串。//$num2//右边的运算数,是一个字符串。//$scale//可选的 scale 参数被用作设置指示数字, 在使用来作比较的小数点部分。//返回值//两个数相等时返回 0; $num1 比 $num2 大时返回 1; 其他则返回 -1。
bcmod — 任意精度数字取模
//对 $num1 使用 $num2 取模。 除非 $num2 是零,否则结果必定和 $num1 有相同的符号。bcmod($num1, $num2)//参数//$num1//string 类型的被除数。//$num2//string 类型的除数。//返回值//返回字符串类型取模后的结果,如果 $num2 为 0 则返回 null。
bcpow — 任意精度数字的乘方
//$num 的 $exponent 次方运算。bcpow($num, $exponent, $scale)//参数//$num//string 类型的底数。//$exponent//string 类型的指数。 如果指数不是整数,将被截断。 指数的有效范围取决于平台,但起码支持 -2147483648 到 2147483647 的范围。//$scale//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//返回字符串类型的结果。
## bcscale — 设置/获取所有 bc math 函数的默认小数点保留位数```php//设置所有 bc math 函数在未设定情况下的小数点保留位数。bcscale(int $scale)//获取当前的小数点保留位数。bcscale(null $scale = null)//参数//$scale//小数点保留位数。//返回值//设置的时候,返回之前的小数点保留位数。否则就是返回当前的位数。
bcsqrt — 任意精度数字的二次方根
//返回 $num 的二次方根。bcsqrt($num, $scale)//参数//$num//字符串类型的操作数。//$scale//此可选参数用于设置结果中小数点后的小数位数。如果未设置,则默认为 0。//返回值//以 string 类型返回二次方根的结果,如果 num 是负数则返回 null。
bcpowmod — 用于将任意精度的基数提高到另一个按指定模数减少的指数
//此函数接受三个任意精度的数字作为字符串,并在将结果缩放到指定的精度后返回以数字为底的指数模的基数。bcpowmod ( $base, $exponent, $mod, $scale)//$base:此参数为字符串类型,表示左操作数或数字(即增加幂的基础)。此参数是必需的。//$exponent:此参数是字符串类型,代表右操作数或代表指数的数字之一。此参数是必需的。//$mod:此参数为字符串类型,并且接受表示模数的操作数或数字。此参数是必需的。//$scale:此参数为int类型,是可选的。该参数表示(base)结果中小数点后出现的位数exponent)%mod。默认值为零。## ## ##
来源地址:https://blog.csdn.net/qq_37468919/article/details/124425713
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341