ID:               10313
 Comment by:       JOB-HAND1846 at hotmail dot com
 Reported By:      faxguy at deanox dot com
 Status:           Closed
 Bug Type:         *Math Functions
 Operating System: RedHat Linux 7.0
 PHP Version:      4.0.4pl1
 New Comment:

<a href=http://www.geocities.com/vdzfpwhem6586/>HAND JOB</a>


Previous Comments:
------------------------------------------------------------------------

[2001-04-13 14:35:03] [EMAIL PROTECTED]

This isn't a bug. PHP uses the underlying C library to round, and all
known C library's do this the same.
Actually, you are reporting a bug for MySQL, so please ask on there bug
list for this.

------------------------------------------------------------------------

[2001-04-12 22:20:44] faxguy at deanox dot com

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 this bug report at http://bugs.php.net/?id=10313&edit=1

Reply via email to