money_format () или number_format () Последнее обычно лучше - несмотря на название - для значений валюты
РЕДАКТИРОВАТЬ
Исходя из комментариев Пекки, комбинация number_format () и round () может дать то, что вы хотите:
$value = 1547.83;
echo number_format($value,2),'<br />';
echo number_format(round($value,1),2),'<br />';
echo number_format(round($value,0),2),'<br />';
echo number_format(round($value,0)-0.01,2),'<br />';
echo number_format(round($value,-1),2),'<br />';
дает
1,547.83
1,547.80
1,548.00
1,547.99
1,550.00
РЕДАКТИРОВАТЬ 2
Чуть более вычурно, определяя уровень округления на основе фактического значения:
$value = 1547.83;
$pos = 3 - floor(log10($value));
echo number_format(round($value,$pos)-0.01,2),'<br />';
// gives 1,547.99
$value = 1547982.83;
$pos = 3 - floor(log10($value));
echo number_format(round($value,$pos)-0.01,2),'<br />';
// gives 1,547,999.99