On 17 September 2011 15:56, Bill Guion <bguion@xxxxxxxxxxx> wrote: > On Sep 17, 2011, at 3:46 AM, Cyril Lopez wrote: > >> From: Cyril Lopez <cyril@xxxxxxxxx> >> Date: September 16, 2011 10:58:28 AM EDT >> To: php-general@xxxxxxxxxxxxx >> Subject: Round with money_format >> >> Hi, >> >> Can someone help me understand how money_format() rounds numbers ? >> >> <?php >> setlocale(LC_ALL, 'fr_FR.UTF-8'); >> $price = 12.665; >> echo money_format('%i',$price); >> // 12.66 EUR, 12.67 EUR expected >> >> $price2 = 12.666; >> echo money_format('%i',$price2); >> // 12.67 EUR, ok >> >> echo round($price,2); >> // 12.67, ok >> echo round($price2,2); >> // 12.67, ok >> ?> >> >> Misconfiguration ? Bug ? >> Thanks ! >> >> Cyril >> >> Config : >> Debian Lenny, PHP 5.3.8 > > As someone else pointed out, rounding rules vary by locale, but I was taught 40+ years ago in graduate school programming class, 4 rounds down, 6 rounds up, and 5 rounds to the even number. This means 65 rounds to 6, while 75 rounds to 8. Your example seems to follow that rule. I've been looking to see if I can find the locale's rounding rules - I can't. Would be useful if anyone knows where they are defined. As far as I can find (pages similar to http://www.cl.cam.ac.uk/cgi-bin/manpage?7+locale), the locale data doesn't seem to include the rounding rules. Sure, the number of DP, grouping, etc. Yes. But no rounding. So, does this just truncate? -- Richard Quadling Twitter : EE : Zend : PHPDoc @RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php