21、PHP 8.4 新特性 - 新函数 bcceil,bcfloor,bcround
在 PHP 8.4 中,新增了三个用于处理高精度浮点数的函数:bcceil()
、bcfloor()
和 bcround()
。这些函数是 BCMath 扩展 中的新成员,旨在提供高精度的数学操作,尤其适用于需要精确控制小数位数的场景。
这三个函数分别对应于数学中的 向上取整(ceil)、向下取整(floor)和 四舍五入(round)操作,但它们在处理精度时更加精确,适用于需要更多精度的应用场景。
bcceil
/**
* $num:要向上取整的数字(字符串形式)
* $scale:可选参数,指定小数点后的位数,默认为 0,表示取整到整数
*
* 返回一个字符串,表示取整后的数字。
**/
bcceil(string $num, int $scale = 0): string
bcceil()
函数返回给定数字的 向上取整(ceiling)值。它会将数字舍入到最接近的整数,如果数字已经是整数,则返回该整数。
<?php
declare(strict_types=1);
echo bcceil("1.234") . PHP_EOL; // 输出 2
echo bcceil("3.000") . PHP_EOL; // 输出 3
echo bcceil("-3.1415") . PHP_EOL; // 输出 -3
bcfloor
/**
* $num:要向下取整的数字(字符串形式)
* $scale:可选参数,指定小数点后的位数,默认为 0,表示取整到整数。
*
* 返回一个字符串,表示取整后的数字。
*/
bcfloor(string $num, int $scale = 0): string
bcfloor()
函数返回给定数字的 向下取整(floor)值。它会将数字舍入到最接近的整数,如果数字已经是整数,则返回该整数。
<?php
declare(strict_types=1);
echo bcfloor("1.234") . PHP_EOL; // 输出 1
echo bcfloor("3.999") . PHP_EOL; // 输出 3
echo bcfloor("-3.1415") . PHP_EOL; // 输出 -4
bcround
/**
* $num:要四舍五入的数字(字符串形式)
* $scale:可选参数,指定小数点后的位数,默认为 0,表示四舍五入到整数
*
* 返回一个字符串,表示四舍五入后的数字
**/
bcround(string $num, int $scale = 0): string
bcround()
函数用于 四舍五入 给定的数字。它通过指定的精度(小数点后的位数)对数字进行舍入。与常规的 round()
函数不同,bcround()
是针对高精度浮点数的,适用于需要精确处理小数的场景
<?php
declare(strict_types=1);
echo bcround("1.234", 2) . PHP_EOL; // 输出 1.23
echo bcround("3.999", 0) . PHP_EOL; // 输出 4
echo bcround("-3.1415", 2) . PHP_EOL; // 输出 -3.14
函数对比
函数 | 功能 | 默认行为(scale = 0 ) |
---|---|---|
bcceil() |
向上取整 | 取整数部分,向更大值取整 |
bcfloor() |
向下取整 | 取整数部分,向更小值取整 |
bcround() |
四舍五入 | 四舍五入到整数 |
总结与应用场景
-
bcceil()
:适用于需要将数字向上取整的场景,例如在处理金额时,可能希望避免给客户提供不准确的小数值。 -
bcfloor()
:适用于需要将数字向下取整的场景,例如计算时不希望有小数部分,或者想要减少计算结果中的金额。 -
bcround()
:适用于需要精确控制小数点后位数并且进行四舍五入的场景,常见于财务应用中。
请登录后再评论