39、PHP 8.4 方法或功能修改 - round 函数 无效的舍入模式会引发 ValueError 异常

作者: 温新

图书: 【PHP 8.4 新特性】

阅读: 134

时间: 2025-01-18 09:18:22

round() 函数将浮动值四舍五入到最接近的整数或指定精度的小数值。它支持通过额外的参数来微调四舍五入的方法。

在 PHP 8.4 之前,如果传递了一个无效的四舍五入模式参数,PHP 会默认为 PHP_ROUND_HALF_UP 四舍五入模式,而不会抛出错误。在 PHP 8.4 及之后的版本中,如果传递无效的四舍五入模式参数,将会抛出一个 \ValueError 异常,不再默认为 PHP_ROUND_HALF_UP

round(num: 3.14, mode: 42); // 无效的$mode参数

ValueError: round(): Argument #3 ($mode) must be a valid rounding mode (PHP_ROUND_*)

向后兼容性影响

在 PHP 8.4 及之后的版本中,如果向 round() 函数传递了无效的 $mode 参数,将抛出一个 ValueError 异常。这是为了纠正之前 PHP 版本中对于无效值默认使用 PHP_ROUND_HALF_UP 四舍五入模式的可能意外行为。

对于那些没有传递 $mode 参数给 round() 函数,或者传递了正确参数值(如 PHP_ROUND_* 常量)的 PHP 代码,将不会出现功能上的变化。任何收到异常的 PHP 应用程序可以安全地去掉额外的参数,以模仿现有行为,而不会引发异常。

示例:

round(num: 3.14, mode: 42);  // 会抛出异常
round(num: 3.14);  // 不会有异常
请登录后再评论