Oops...

On 16 Sep 2011, at 16:36, Stuart Dallas wrote:

> On 16 Sep 2011, at 15:58, Cyril Lopez wrote:
> 
>> 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 ?
> 
> It's a direct mapping to the libc function, strfmon [1], and an equivalent C 
> script gave the same result so it's not a bug in PHP. Locales can't define 
> rounding rules, so it's not related to that.
> 
> Googling for strfmon rounding errors doesn't get any useful results, so 
> either this is by design or it's never caused anyone a problem.
> 
> Solution... pass the number through round before going in to money_format.
> 
> -Stuart

[1] http://lxr.php.net/opengrok/xref/PHP_5_3/ext/standard/string.c#5156

> -- 
> Stuart Dallas
> 3ft9 Ltd
> http://3ft9.com/


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to