#### 1. PHP 中的精度计算问题 --- 当使用 php 中的 `+-*/` 计算浮点数时, 可能会遇到一些计算结果错误的问题 这个其实是计算机底层二进制无法精确表示浮点数的一个 bug, 是跨域语言的, 比如 js 中的 **舍入误差** 所以大部分语言都提供了用于精准计算的类库或函数库, 比如 php 中的 bc 高精确度函数库, js 中的 toFixed() 如下所示: 将计算结果浮点数 58 转为整数后结果是 57, 而不是 58 ```php $result = 0.58 * 100; var_dump(intval($result)); // 57 ``` js 中的舍入误差: **0.1 + 0.2** 的计算结果为 **0.30000000000000004**, 此时可以使用 `toFixed()` 函数处理, 使其返回正确的结果  #### 2. PHP 中的 bc 高精确度函数库 --- 常用的高精度函数 ```php // 高精度加法 bcadd(string $num1, string $num2, int $scale = 0); // 高精度减法 bcsub(string $num1, string $num2, int $scale = 0); // 高精度乘法 bcmul(string $num1, string $num2, int $scale = 0); // 高精度除法 bcdiv(string $num1, string $num2, int $scale = 0); // 比较两个高精度数字 bccomp(string $num1, string $num2, int $scale = 0); ``` 特别注意: 从 PHP7 开始, 很多框架中都使用了严格模式(比如: TP6), 在严格模式下, 函数实参和形参的数据类型必须一致 bc 系列函数库前两个参数要求是字符串类型, 第三个参数为可选参数, 用于设置结果中小数点后的小数位数, 返回值为字符串 #### 3. 推荐文章 --- PHP 精度计算问题: [https://www.cnblogs.com/xiezhi/p/5688029.html](https://www.cnblogs.com/xiezhi/p/5688029.html)