StrToBcmath

介绍

StrToBcmath 是一个 PHP 类,用于将字符串表达式转换为 BcMath 计算结果。它支持复杂的“加、减、乘、除、指数”运算,支持括号优先级。

为什么要使用这个库?

对于需要精确结果的计算,我们通常会选择使用 BcMath 来避免小数带来的误差。然而,对于复杂的计算,BcMath 的表达方式可能会显得不够直观和易读。使用这个库,你可以将直观且易读的运算表达式转换为 BcMath 的计算结果。这样,你不仅可以确保结果的精度,还能保持代码的高度可读性,节省编写代码的时间,同时避免在编写 BcMath 时可能出现的错误。

安装说明

将 StrToBcmath.php 文件复制到你的项目中,并在需要使用的地方引入。

require_once 'StrToBcmath.php';

也可以使用 composer require k6xiao/strtobcmath 来安装这个库, 然后使用 use k6xiaoStrToBcmath; 引入该库。

使用说明

首先,创建一个 StrToBcmath 对象。你可以在创建对象时设置精度和是否输出计算过程。

// @param $scale // 可选,精度,默认值:8 // @param $isecho // 可选,是否输出计算过程,默认值:false $math = new StrToBcmath(); 然后,使用 of 方法计算表达式的结果。

$result = $math->of('(((2.5-3.5)+8)**(5-1)+6)/2'); // a**b 表示a的b次方 echo $result; // 1203.50000000

示例

以下是一些使用 StrToBcmath 的示例:

// 使用书写案例 $money = 123.456; $sxf = 0.6; $fee = (new StrToBcmath(6))->of("{$money}*{$sxf}/100"); echo "{$money} 的 {$sxf}% 手续费是:{$fee}"; // 123.456 的 0.6% 手续费是:0.740736

require_once 'StrToBcmath.php'; // 定义一些表达式 $expressions = [ '2*3+6+6/2', '2/3', '2+3', '2-3', '2-3**2', '(5-3)**2', '2.5*3.5', '2.5/3.5', '2.5+3.5', '2.5-3.5', '((2.5-3.5)+8)*3', '(((2.5-3.5)+8)*(2.5-1)+6)/2', ]; // 计算每个表达式的结果 foreach ($expressions as $expression) { $result = (new StrToBcmath(6, true))->of($expression) * 1; echo "$expression = $result<br/><br/>"; }

这将输出每个表达式的计算过程和结果:

2*3+6+6/2 =6.000000+6+6/2 =6.000000+6+3.000000 =12.000000+3.000000 =15.000000 2*3+6+6/2 = 15 2/3 =0.666666 2/3 = 0.666666 2+3 =5.000000 2+3 = 5 2-3 =-1.000000 2-3 = -1 2-3**2 =2-9.000000 =-7.000000 2-3**2 = -7 (5-3)**2 =2.000000**2 =4.000000 (5-3)**2 = 4 2.5*3.5 =8.750000 2.5*3.5 = 8.75 2.5/3.5 =0.714285 2.5/3.5 = 0.714285 2.5+3.5 =6.000000 2.5+3.5 = 6 2.5-3.5 =-1.000000 2.5-3.5 = -1 ((2.5-3.5)+8)*3 =(-1.000000+8)*3 =7.000000*3 =21.000000 ((2.5-3.5)+8)*3 = 21 (((2.5-3.5)+8)*(2.5-1)+6)/2 =((-1.000000+8)*(2.5-1)+6)/2 =(7.000000*(2.5-1)+6)/2 =(7.000000*1.500000+6)/2 =16.500000/2 =8.250000 (((2.5-3.5)+8)*(2.5-1)+6)/2 = 8.25

注意

StrToBcmath 类使用 PHP 的 bcmath 库进行计算,所以你的 PHP 环境需要支持 bcmath 库。

项目源代码

你可以在以下地址找到我们的项目源代码:

GitHub:https://github.com/k6xiao/StrToBcmath.git Gitee:https://gitee.com/crazy-dream/StrToBcmath.git

参与贡献

Fork 本仓库 新建 Feat_xxx 分支 提交代码 新建 Pull Request

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。