编程

PHP 8.4 : round() - 无效的取整模式抛出 \ValueError 异常

577 2024-03-10 03:37:00

round() 函数对浮点值取整到最近的整数,或者指定精度的小数。它支持使用额外参数微调取整方法。

在 PHP 8.4 之前,传递无效的取整模式参数时,将静默地假定默认使用 PHP_ROUND_HALF_UP 取整模式。在 PHP 8.4 及更高版本中,传递无效的舍入模式会导致 \ValueError 异常,并且不再假定为 PHP_ROUND_HALF_UP

round(num: 3.14, mode: 42); // Invalid $mode parameter
ValueError: round(): Argument #3 ($mode) must be a valid rounding mode (PHP_ROUND_*).

Related Change相关

  • PHP 8.4: round() 函数新增取整模式

后向兼容性影响

将无效的 $mode 参数传递给 round() 函数会导致在 PHP 8.4 及更高版本中引发 ValueError 异常。这是为了纠正以前的 PHP 版本中可能出现的意外行为,这些版本假定在无效值时使用默认的 PHP_ROUND_HALF_UP 舍入模式。

不向 round 函数调用传递 $mode 参数或传递正确参数值(PHP_ROUND_* 常量)的 PHP 代码将不会看到任何功能更改。任何接收到异常的 PHP 应用都可以安全地删除额外的参数,以模仿现有的行为,而不会导致异常。

- round(num: 3.14, mode: 42);
+ round(num: 3.14);