Bug #10313: ROUND inconsistency
| From: | faxguy at deanox dot com | Date: | Fri, 13 Apr 2001 02:20:45 +0000 |
| Subject: | Bug #10313: ROUND inconsistency | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-51517@lists.php.net to get a copy of this message | ||
From: faxguy@deanox.com
Operating system: RedHat Linux 7.0
PHP version: 4.0.4pl1
PHP Bug Type: *Math Functions
Bug description: ROUND inconsistency
Using MySQL 3.23.32 on RedHat Linux 7.0...
MySQL's ROUND function rounds 5 up when the preceding digit is odd and down when the preceding
digit is even.
mysql> select round(1.5);
+------------+
| round(1.5) |
+------------+
| 2 |
+------------+
1 row in set (0.00 sec)
mysql> select round(2.5);
+------------+
| round(2.5) |
+------------+
| 2 |
+------------+
1 row in set (0.00 sec)
I think that this is technically the correct behavior, scientifically, anyway. However, this is not
the common "lay-man's" method of rounding, which is to always round 5 up, as
exhibited by PHP-4.0.4pl1...
<? echo round(1.5); ?>
<br>
<? echo round(2.5); ?>
Apache 1.3.14 output for this is:
2
3
This discrepancy causes a difficulty in programming PHP and MySQL together, for example, because all
of the rounding must be done in either PHP or MySQL but not both partially unless you want
conflicting data.
I would like to see MySQL ROUND() syntax expand to be ROUND(X,D,M) where optional M value indicates
the method of rounding, the default being the current method.
I would also like to see PHP round() syntax expand to be
double round (double val [, int precision] [, char method])
where the optional method value indicates the method of rounding, the default being the current
method.
Thanks.
Lee Howard
--
Edit Bug report at: http://bugs.php.net/?id=10313&edit=1