Re: Round with money_format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux