note 98704 added to function.round
| From: | hugues at zonereseau dot com | Date: | Thu, 01 Jul 2010 19:45:48 +0000 |
| Subject: | note 98704 added to function.round | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-170636@lists.php.net to get a copy of this message | ||
I had problem with round() function I didn't gave me the same result in windows or on a linux
server :
round(4.725, 2); // gave me 4.72 on linux
round(4.725, 2); // gave me 4.73 on windows
The expected result was 4.73
Here my function to resolve my problem
function mround($number, $precision=0) {
$precision = ($precision == 0 ? 1 : $precision);
$pow = pow(10, $precision);
$ceil = ceil($number * $pow)/$pow;
$floor = floor($number * $pow)/$pow;
$pow = pow(10, $precision+1);
$diffCeil = $pow*($ceil-$number);
$diffFloor = $pow*($number-$floor)+($number < 0 ? -1 : 1);
if($diffCeil >= $diffFloor) return $floor;
else return $ceil;
}
echo mround(4.725, 2); // Yes 4.73
----
Server IP: 216.235.13.26
Probable Submitter: 74.59.61.62
----
Manual Page -- http://www.php.net/manual/en/function.round.php
Edit -- https://master.php.net/note/edit/98704
Del: integrated -- https://master.php.net/note/delete/98704/integrated
Del: useless -- https://master.php.net/note/delete/98704/useless
Del: bad code -- https://master.php.net/note/delete/98704/bad+code
Del: spam -- https://master.php.net/note/delete/98704/spam
Del: non-english -- https://master.php.net/note/delete/98704/non-english
Del: in docs -- https://master.php.net/note/delete/98704/in+docs
Del: other reasons-- https://master.php.net/note/delete/98704
Reject -- https://master.php.net/note/reject/98704
Search -- https://master.php.net/manage/user-notes.php