Условное форматирование поплавка в PHP - PullRequest
1 голос
/ 29 мая 2009

Я получаю значение с плавающей точкой из базы данных mysql на странице php (2.5, 3.0 и т. Д.)

Я хотел бы отформатировать это значение так, чтобы, если оно на самом деле было целым числом, оно показывало ноль десятичных знаков. (он должен вывести 3 вместо 3,0, но вывести 2,5 как 2,5)

Какой самый простой способ добиться этого?

Ответы [ 3 ]

3 голосов
/ 29 мая 2009

Я бы попробовал что-то вроде:

echo (intval($v) == $v) ? intval($v) : $v;

Но мне интересно, есть ли более эффективный способ.

1 голос
/ 29 мая 2009

Вы также можете выполнить форматирование в своем запросе, вероятно, это будет быстрее, чем в php, особенно если вам нужно обработать много строк.

Что-то вроде:

SELECT
    CASE 
        WHEN t.myColumn % 1 = 0 
            THEN FORMAT( t.myColumn, 0 ) 
            ELSE FORMAT( t.myColumn, 2 )
    END AS `formatted`
    ...
FROM myTable t
WHERE ...

Тот же метод применяется для php, если вы хотите сделать это вне базы данных:

$displayValue = $myValue % 1 == 0 
    ? number_format( $myValue, 0 ) 
    : number_format( $myValue, 2 );
0 голосов
/ 29 мая 2009

Вы также можете использовать printf, если хотите контролировать количество цифр, отображаемых справа от десятичной точки:

  if (intval($v) == $v) printf("%d", intval($v)); else printf("%0.2f", $v);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...