Re: Re: [PHP] Round with money_format
| From: | Richard Quadling | Date: | Sat, 17 Sep 2011 21:46:57 +0000 |
| Subject: | Re: Re: [PHP] Round with money_format | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-314924@lists.php.net to get a copy of this message | ||
On 17 September 2011 15:56, Bill Guion <bguion@comcast.net> wrote:
> On Sep 17, 2011, at 3:46 AM, Cyril Lopez wrote:
>
>> From: Cyril Lopez <cyril@nethik.fr>
>> Date: September 16, 2011 10:58:28 AM EDT
>> To: php-general@lists.php.net
>> 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