danhunsaker / bcmath
PHP bcmath 作为静态类,具有多个增强功能。
v1.1.3
2017-05-29 21:12 UTC
Requires
- php: ^5.4|^7.0
- ext-bcmath: *
Requires (Dev)
- behat/behat: ^3.0
- henrikbjorn/phpspec-code-coverage: ^2.0|^1.0
- phpspec/phpspec: ^2.4
- phpunit/phpunit: ^4.0|^5.0
- rmiller/behat-spec: ^0.3
This package is auto-updated.
Last update: 2024-09-13 10:23:22 UTC
README
PHP bcmath 作为静态类,具有多个增强功能。
安装
使用 Composer
composer require danhunsaker/bcmath
用法
用法几乎与 bcmath 扩展函数 相同。主要区别在于,将 bc
前缀替换为 Danhunsaker\BC
类名(您可以通过 use Danhunsaker\BC
在您的项目(s)中轻松地别名)。
换句话说
bcadd()
变为BC::add()
bccomp()
变为BC::comp()
bcdiv()
变为BC::div()
bcmod()
变为BC::mod()
bcmul()
变为BC::mul()
bcpow()
变为BC::pow()
bcpowmod()
变为BC::powmod()
bcscale()
变为BC::scale()
bcsqrt()
变为BC::sqrt()
bcsub()
变为BC::sub()
还有一些额外的便利方法,这些方法在扩展中不存在
BC::epow()
将 e 的指数提升到参数的幂。BC::fact()
计算参数的阶乘。BC::intval()
如果有,截断参数的小数部分。BC::ln()
给出参数的自然对数。BC::log()
给出参数的 10 底对数(使用 ln $val/ln 10)。BC::max()
返回数组中的最大值(第一个参数)。BC::min()
返回数组中的最小值(第一个参数)。BC::modfrac()
的行为与BC::mod()
完全相同,但它将返回任何余数的分数部分以及整数部分。BC::powfrac()
支持分数指数,允许计算除了平方根以外的根。BC::root()
是BC::powfrac()
的补充,实际上是它的便利包装器。BC::round()
将值四舍五入到指定的刻度。
表达式解析器
还有 BC::parse()
,它允许您将计算写成表达式而不是方法调用。它(目前)不支持通过方法调用提供的 所有 内容,但这计划在未来的版本中实现。目前,这里列出了哪些是支持的,以及如何在您的表达式中指定每个
BC::add(a, b)
=>'a + b'
BC::div(a, b)
=>'a / b'
BC::div(a, b, 0)
=>'a \ b'
BC::mod(a, b)
=>'a % b'
BC::modfrac(a, b)
=>'a %% b'
BC::mul(BC::div(a, b, 0), b)
=>'a * b'
BC::sub(a, BC::mod(a, b))
=>'a -% b'
BC::mul(a, b)
=>'a * b'
BC::pow(a, b)
=>'a ** b'
BC::powfrac(a, b)
=>'a ^ b'
BC::sub(a, b)
=>'a - b'
还有一些逻辑表达式可用,它们将返回布尔值(真/假),而不是数字
BC::comp(a, b) == 0
=>'a = b'
或'a == b'
BC::comp(a, b) == 1
=>'a > b'
BC::comp(a, b) == -1
=>'a < b'
BC::comp(a, b) >= 0
=>'a >= b'
BC::comp(a, b) <= 0
=>'a <= b'
BC::comp(a, b) != 0
=>'a != b'
或'a <> b'
a and b
=>'a & b'
或'a && b'
a or b
=>'a | b'
或'a || b'
a xor b
=>'a ~ b'
或'a ~~ b'
表达式解析器识别括号,因此您可以按需使用它们来分组子表达式。它还支持变量
BC::parse('{m} * {x} + {b}', ['m' => 0.5, 'x' => 5, 'b' => 0]);
需要为您的表达式指定一个比例吗?没问题,只需将其作为第三个参数传递即可
BC::parse('{m} * {x} + {b}', ['m' => 0.5, 'x' => 5, 'b' => 0], 18);
当然,您可以通过传递 null
作为第二个参数来跳过变量列表
BC::parse('{m} * {x} + {b}', null, 18); // Any unrecognized variables are assumed to be zero, // so the above is the same as: BC::parse('0 * 0 + 0', null, 18);
贡献
欢迎在GitHub上随时进行贡献。
安全问题应直接通过电子邮件报告给Dan Hunsaker。