PHP未定义常量PHP_舍入_一半向下
我在一个使用PHP的round函数的项目中有一些PHP代码。在我的本地主机上,我的mode参数周围没有任何引号,只是用PHP_ROUND_HALF_DOWN表示。但是,当推送到我的服务器时,我收到错误消息:PHP未定义常量PHP_舍入_一半向下,php,constants,undefined,rounding,Php,Constants,Undefined,Rounding,我在一个使用PHP的round函数的项目中有一些PHP代码。在我的本地主机上,我的mode参数周围没有任何引号,只是用PHP_ROUND_HALF_DOWN表示。但是,当推送到我的服务器时,我收到错误消息: Use of undefined constant PHP_ROUND_HALF_DOWN - assumed 'PHP_ROUND_HALF_DOWN' Warning (2): Wrong parameter count for round() [APP/views/helpers/ti
Use of undefined constant PHP_ROUND_HALF_DOWN - assumed 'PHP_ROUND_HALF_DOWN'
Warning (2): Wrong parameter count for round() [APP/views/helpers/time_left.php, line 14]
现在,当我向mode参数添加单引号时,第一个错误消失了,但是“错误的参数计数”仍然存在。我按如下方式调用该函数:
$days = round(($difference/$day), 0, PHP_ROUND_HALF_DOWN);
谢谢你的帮助 在PHP5.3中添加了。确保您运行的至少是该版本
通过在PHP文件中放置以下内容,可以查看正在运行的版本:
var_dump(phpversion());
只有在运行早期版本的PHP时,才会使用mode参数,因此不会定义mode选项常量(PHP_ROUND_HALF_UP、PHP_ROUND_HALF_DOWN、PHP_ROUND_HALF_偶数和PHP_ROUND_HALF_ODD) 编辑 在5.3.0之前,不能使用round()的mode参数,但可以通过组合函数实现等效:
round(floor($value * 100) / 100,2); // to round down to 2dp
round(floor($value * 1000) / 1000,3); // to round down to 3dp
round(ceil($value * 100) / 100,2); // to round up to 2dp
PHP\u ROUND\u HALF\u DOWN
需要PHP 5.3.0,如下所示:
您可能使用的是较低的PHP版本。您的服务器上运行的是什么版本的PHP?据了解,只有PHP5.3或更高版本支持PHP_ROUND常量。您的版本是否支持
PHP_ROUND_HALF_DOWN
模式直到5.3才引入
5.3.0 The mode parameter was introduced.
您可以使用PHP 5.3中添加的$mode来代替(或者如果您想换一种方式) 使用以下命令检查php的版本:
php -v
编辑:
或者使用php的phpinfo()过程
cheersround()默认使用PHP\u round\u HALF\u UP,但您只能在PHP>=5.3.0中进行更改
为了模拟PHP_ROUND_HALF_DOWN,我认为可以在舍入之前从数字中减去(1/10^(精度+1))*5
简而言之,
<?php
$number=20.005;
$precision=2;
echo round($number,$precision); //20.01
echo round($number-(1/10^($precision+1))*5,$precision); //20.00
echo round($number-0.005,2); //20.00
?>
有没有办法继续使用mode参数?谢谢谢谢问题:你为什么用100?。用10代替100同样有效。在2dp时使用100,3dp时使用1000,5dp时使用100000,等等。。。。也要计算零的数量。
$qty = 15;
$size = 6;
$box= round(($qty)/($size), 0, PHP_ROUND_HALF_ODD);
$picecs = ($qty)%($size);
echo 'BOX=='.$box. 'PICECS==='.$picecs;