Для отображения только 2 десятичных знаков вы можете использовать round($num, 2)
или sprintf("%.2f", $num)
, разница в том, что sprintf
всегда возвращает 2 десятичных знака, т.е. 5
будет 5.00
, тогда как round
показывает необходимое количество знаков после запятой. sprintf
также учитывает локали.
Чтобы знак плюс предшествовал значению, вы просто должны сделать if ($num >= 0) $num = '+'.$num;
И, наконец, для стилевого оформления CSS вы должны обернуть число в промежуток и присвоить ему класс, т.е. positive
или negative
.
Чтобы выполнить все три, у вас может быть такая функция:
function format_decimal($num)
{
return sprintf(
'<span class="%s">%+.2f</span>',
$num < 0 ? 'negative' : 'positive',
$num
);
}