PHP simplexml - форматирование целых чисел - PullRequest
1 голос
/ 21 июня 2011

Я использую simplexml для восстановления xml с удаленного сервера и получаю значения, которые могут выглядеть примерно так:

1.28586732

-1.2357956

Я сохраняюэти значения в переменной, но я хотел бы:

  1. Отображать каждое значение не более чем с двумя десятичными знаками
  2. Знак плюс должен предшествовать значению, если оно положительное
  3. Применение различных стилей CSS в зависимости от того, является ли значение положительным или отрицательным (например, отображаемое значение красного цвета, если оно отрицательное)

Спасибо!

Ответы [ 3 ]

3 голосов
/ 21 июня 2011

Для отображения только 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
    );
}
1 голос
/ 21 июня 2011

пусть:

$s=1.2344545665

if($s>=0)
{
echo "<div class=\"addclass\">+".roundDigits($s,2) . "</div>";
}
else
{
echo "<div class=\"minusclass\">-".roundDigits($s,2) . "</div>";
}
0 голосов
/ 21 июня 2011

Проверьте номер_формат.http://php.net/manual/en/function.number-format.php Тогда, если> = 0 для положительного, <= отрицательные проверки. </p>

...