note 96703 deleted from function.round by danbrown
| From: | danbrown@php.net | Date: | Fri, 12 Mar 2010 13:22:48 +0000 |
| Subject: | note 96703 deleted from function.round by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-166962@lists.php.net to get a copy of this message | ||
Note Submitter: sonicpr at bol dot com dot br
----
Problems with 2 decimal places (http://docs.sun.com/source/806-3568/ncg_goldberg.html):
<?php
function myround($n,$p=0) {
$d=pow(10,$p);
return floor(0.00000001 + (($n>0)?+0.5:-0.5) + $d*$n)/$d;
}
echo round(9.5), ' => ', myround(9.5), "\n"; // 10 => 10
echo round(9.95,1), ' => ', myround(9.95,1), "\n"; // 10 => 10
echo round(9.995,2), ' => ', myround(9.995,2), "\n"; // 9.99 => 10
echo round(9.9995,3), ' => ', myround(9.9995,3), "\n"; // 10 => 10
echo round(9.99995,4), ' => ', myround(9.99995,4), "\n"; // 10 => 10
echo round(-9.5), ' => ', myround(-9.5), "\n"; // -10 => -10
echo round(-9.95,1), ' => ', myround(-9.95,1), "\n"; // -10 => -10
echo round(-9.995,2), ' => ', myround(-9.995,2), "\n"; // -9.99 => -10
echo round(-9.9995,3), ' => ', myround(-9.9995,3), "\n"; // -10 => -10
echo round(-9.99995,4), ' => ', myround(-9.99995,4), "\n"; // -10 => -10
echo round(8.155, 2), ' => ', myround(8.155, 2), "\n"; // 8.15 => 8.16
echo round(141.075, 2), ' => ', myround(141.075, 2), "\n"; // 141.07 =>
141.08
/*
PHP 5.2.6-1+lenny6 with Suhosin-Patch 0.9.6.2 (cli) (built: Feb 9 2010 03:05:13)
Copyright (c) 1997-2008 The PHP Group
*/
?>