|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2005-09-08 14:24 UTC] lukasz at knasiecki dot com
 Description: ------------ Round function works with errors. Reproduce code: --------------- echo '<br>'.round(8.055, 2); echo '<br>'.round(8.155, 2); echo '<br>'.round(8.255, 2); Expected result: ---------------- echo '<br>'.round(8.055, 2); //gives 8.06 echo '<br>'.round(8.155, 2); //gives 8.16 echo '<br>'.round(8.255, 2); //gives 8.26 Actual result: -------------- echo '<br>'.round(8.055, 2); //gives 8.06 echo '<br>'.round(8.155, 2); //gives 8.15 !!! echo '<br>'.round(8.255, 2); //gives 8.26 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 07:00:01 2025 UTC | 
<?php function myround($n,$p=0) { $div = pow(10,$p); $sign = ($n > 0) ? +0.5 : -0.5; return floor(0.000000000001 + ($sign + $div * $n))/$div; } echo round(9.5), ' => ', myround(9.5), chr(10); // 10 => 10 echo round(9.95,1), ' => ', myround(9.95,1), chr(10); // 10 => 10 echo round(9.995,2), ' => ', myround(9.995,2), chr(10); // 9.99 => 10 echo round(9.9995,3), ' => ', myround(9.9995,3), chr(10); // 10 => 10 echo round(9.99995,4), ' => ', myround(9.99995,4), chr(10); // 10 => 10 echo round(-9.5), ' => ', myround(-9.5), chr(10); // -10 => -10 echo round(-9.95,1), ' => ', myround(-9.95,1), chr(10); // -10 => -10 echo round(-9.995,2), ' => ', myround(-9.995,2), chr(10); // -9.99 => -10 echo round(-9.9995,3), ' => ', myround(-9.9995,3), chr(10); // -10 => -10 echo round(-9.99995,4), ' => ', myround(-9.99995,4), chr(10); // -10 => -10 echo round(8.155, 2), ' => ', myround(8.155, 2), chr(10); // 8.155 => 8.16 /* 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 */ ?>