Re: Round with money_format

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

 



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

-- 
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