Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP未定义常量PHP_舍入_一半向下_Php_Constants_Undefined_Rounding - Fatal编程技术网

PHP未定义常量PHP_舍入_一半向下

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

我在一个使用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/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()过程

cheers

round()默认使用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;